小编Dan*_*ant的帖子

jQuery width,outerWidth(),innerWidth()返回不正确的数据

出于某种原因,我无法让jQuery为各种元素提供可靠的宽度数据.这是一个演示问题的小提琴的链接:http: //jsfiddle.net/snoopydaniels/ZDbaa/1/

我正在尝试创建一个多维下拉菜单.正如您在jsfiddle中看到的那样,第二个嵌套菜单未正确定位.我用来定位它的jQuery查询兄弟锚元素outerWidth()用于发现它的宽度,然后根据返回的宽度选择嵌套列表的左侧位置.当我在CSS中给兄弟锚元素设置一个宽度然后我得到接近正确值的东西,但没有那个静态宽度,outerWidth()返回"2".

但即使我给锚元素设置了一个宽度,outerWidth(true)仍然没有正确地合并元素的边框.

我要把头发拉出来.为什么这样的废话不能像宣传的那样工作?

javascript jquery element width

4
推荐指数
1
解决办法
1万
查看次数

如果所有JavaScript类型都是对象,那么为什么数字会按值传递?

在关于闭包的文章中,您经常会看到在循环内部创建闭包,使用自调用函数将迭代器变量传递给返回的函数表达式,以便在自调用时围绕迭代器变量的值创建闭包.调用函数,而不是循环结束后的值.这是一个例子:

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结尾.

这是否意味着字符串和数字只是解释器处理不同的对象的特殊情况,或者我是否遭受了根本的误解?

javascript closures loops

2
推荐指数
1
解决办法
58
查看次数

标签 统计

javascript ×2

closures ×1

element ×1

jquery ×1

loops ×1

width ×1