Javascript 将参数传递给jQuery。在保留事件参数的同时单击
我需要使用bind将Javascript 将参数传递给jQuery。在保留事件参数的同时单击,javascript,jquery,scope,click,bind,Javascript,Jquery,Scope,Click,Bind,我需要使用bind将click事件绑定到DOM中的一个元素,同时能够动态传递参数,包括事件对象。我当前的脚本使用以下内容: var counter = 1; $(".dynamo_user_info .dynamo_awards").each(function(){ $(this).find("~ div a").each(function(){ var id = $(this).attr("rel").split("aid-")[1]; $(this).
click
事件绑定到DOM中的一个元素,同时能够动态传递参数,包括事件对象。我当前的脚本使用以下内容:
var counter = 1;
$(".dynamo_user_info .dynamo_awards").each(function(){
$(this).find("~ div a").each(function(){
var id = $(this).attr("rel").split("aid-")[1];
$(this).attr("id","dynamo_award-"+counter+"-"+id).bind('click',{c:counter,i:id},function(e){
e.returnValue = e.preventDefault && e.preventDefault() ? false : false;
dynamo.awards.tooltip.ini(c,i);
});
});
counter++;
});
现在,正如您所看到的,计数器
在每次迭代中都会增加,id
不包含静态值。每次迭代后,最终值为:counter=4
,id=2
。现在,只要单击其中一个元素,它就会根据需要运行dynamo.awards.tooltip.ini(c,i)代码>
然而,这并没有达到预期的效果。而不是让它运行:
dynamo.awards.tooltip.ini(1,1)代码>
dynamo.awards.tooltip.ini(2,6)代码>
etc(例如),它将运行:
dynamo.awards.tooltip.ini(4,2)代码>
dynamo.awards.tooltip.ini(4,2)代码>
i、 e它使用计数器
和id
的最后存储值。我猜这是因为bind
的工作方式,在单击元素时传递参数,而不是在单击之前。我不知道如何解决这个问题,除非我能以某种方式欺骗函数的作用域?参数可以通过event.data对象访问,如
dynamo.awards.tooltip.ini(e.data.c, e.data.i);
!啊,英国人<代码>:)
您需要理解。(另请参见和旧版)作为旁注,这一行似乎是多余的:e.returnValue=e.preventDefault&&e.preventDefault()?假:假
@keirsimons您可能没有使用jQuery事件,jQuery已经规范化了.preventDefault
自1.0 6年前添加var c=counter,i=id
到$.find().each()
范围,在$上方。单击()
范围。这将在范围内保持它的价值,您不必用其他积垢(!
)来干扰(!
)。唯一的问题是,我会使用更具表现力的语法,比如说var self\u counter=counter,self\u id=id代码>。