出于某种原因,我无法让jQuery为各种元素提供可靠的宽度数据.这是一个演示问题的小提琴的链接:http: //jsfiddle.net/snoopydaniels/ZDbaa/1/
我正在尝试创建一个多维下拉菜单.正如您在jsfiddle中看到的那样,第二个嵌套菜单未正确定位.我用来定位它的jQuery查询兄弟锚元素outerWidth()用于发现它的宽度,然后根据返回的宽度选择嵌套列表的左侧位置.当我在CSS中给兄弟锚元素设置一个宽度然后我得到接近正确值的东西,但没有那个静态宽度,outerWidth()返回"2".
但即使我给锚元素设置了一个宽度,outerWidth(true)仍然没有正确地合并元素的边框.
我要把头发拉出来.为什么这样的废话不能像宣传的那样工作?
在关于闭包的文章中,您经常会看到在循环内部创建闭包,使用自调用函数将迭代器变量传递给返回的函数表达式,以便在自调用时围绕迭代器变量的值创建闭包.调用函数,而不是循环结束后的值.这是一个例子:
var func = [];
for (var i = 0; i < 3; i++)
{
func.push((function(j){ return function(){ console.log(j); }; })(i));
}
// Logs
// 0
// 1
// 2
// to the console
for (var i = 0; i < func.length; i++)
{
func[i]();
}
Run Code Online (Sandbox Code Playgroud)
基于我的简单实验,这种技术适用于数字和字符串.但是,相同的技术不适用于纯JavaScript对象.如果将对象传递给自调用函数并在函数表达式中引用,则在函数表达式中可以看到对所包含对象的更改,因为传递给自调用函数的值是对对象的引用而不是对象的副本对象,就像数字和字符串一样.
我可以理解为什么这种技术不适用于存储对象的变量,但我不明白为什么这种技术应该使用数字和字符串,其原型链以Object结尾.
这是否意味着字符串和数字只是解释器处理不同的对象的特殊情况,或者我是否遭受了根本的误解?