问题描述
|
我正在修改此代码:
var items;
function getMessage(index) {
if (index == items.size()) return;
var item = items.eq(index);
$.get(\'/message/\' + index,function(response) {
item.html(response);
$(\"ul\").trigger(\'updated\',index);
}
);
}
$(document).ready(function(){
items = $(\".message\");
$(\"ul\").bind(\'updated\',function(event,i) {
getMessage(i + 1);
}
);
getMessage(0);
});
而这个html:
<ul>
<li class=\"message\"></li>
<li class=\"message\"></li>
<li class=\"message\"></li>
</ul>
根据jQuery .trigger()函数的文档,\“可以在不使用数组的情况下传递单个[extra]参数。\”
但是在上面的代码中,侦听\“ update \”事件的函数永远不会获取参数\“ index \”(在第9行中传递),除非我将其括在方括号中,如下所示:
$(\"ul\").trigger(\'updated\',[index]);
我什至不确定这是否与jQuery有关。您能帮我了解发生了什么吗?
解决方法
+1纳什
如果jQuery无法处理没有数组传递的一个参数的情况,看起来就不一样了。已通过API和最新来源进行了验证。
我猜唯一的例外是该值是由一个名为data的变量接收的。它是这样的:
data ? jQuery.makeArray( data ) : [];
现在在JavaScript中,如果数据变量的值为0(数字),则if校验返回false。因此,当您第一次运行它时,它将不会执行makeArray()。
再次,这只是一个思考的猜测。如果不是这种情况,请不要被误导。