我试图使用.index方法返回我点击的图片的位置,然后在另一个必须在函数外部的变量中使用该数字。
var index;
$('.product img').click(function () {
index = $( ".product img" ).index( this ); //it returns an integer, as expected
})
var myProduct = 'product'+ (index + 1)+'.php'; // it returns productNaN.php
只有这样,虽然索引方法正常,但在我的第二个变量中,我得到的不是整数NaN。
答案 0 :(得分:3)
以下是该代码运行的顺序:
创建变量index
和myProduct
,并给出初始值undefined
。
$('.product img')
用于查找元素,然后click
用于为其分配事件处理程序。
'product'+ (index + 1)+'.php'
已分配给myProduct
;请注意index
仍为undefined
。由于您在数学表达式((index + 1)
)中使用它,因此它被强制转换为NaN
,因为undefined
没有数字等价物。所以整体结果就是你所看到的。
可能在未来的某个时刻,有人点击其中一个元素,此时index
设置为新值。这对myProduct
没有影响。
您可能希望在myProduct
处理程序中移动click
的内容1}},在这种情况下,您可能不需要处理程序外的index
所有:
var myProduct;
$('.product img').click(function () {
var index = $( ".product img" ).index( this );
myProduct = 'product'+ (index + 1)+'.php';
});
答案 1 :(得分:2)
此代码仅在点击时评估,而下一行
var myProduct = 'product'+ (index + 1)+'.php';
将在开始时进行评估,并且每次点击时不会进行一次评估,并且此时确定索引未定义,
当点击回调时,只调用里面的代码,如果你想评估它,那么下一行就没有了,然后把它放进去:
var index;
var myProduct;
$('.product img').click(function () {
index = $( ".product img" ).index( this );
myProduct = 'product'+ (index + 1)+'.php';
})