将参数传递给 jQuery .click WHILE 保留事件参数
Passing arguments to jQuery .click WHILST keeping event parameter
我需要使用将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++;
});
现在,如您所见,每次迭代时counter
都会增加,并且id
不保存静态值。每次迭代后,最终值为:counter = 4
、id = 2
。现在,每当单击这些元素之一时,它都会根据需要preventDefaults
,然后运行dynamo.awards.tooltip.ini(c,i);
。
但是,这不会按预期工作。而不是运行:
dynamo.awards.tooltip.ini(1,1);
dynamo.awards.tooltip.ini(2,6);
等(例如),它改为运行:
dynamo.awards.tooltip.ini(4,2);
dynamo.awards.tooltip.ini(4,2);
即它使用最后存储的值进行counter
和id
。我的猜测是它这样做是由于bind
的工作方式,在单击元素时传递参数,而不是在单击之前。我不确定如何解决这个问题,除非我可以以某种方式欺骗函数的范围?
参数可以通过 event.data 对象访问,例如
dynamo.awards.tooltip.ini(e.data.c, e.data.i);
http://api.jquery.com/bind/#passing-event-data
相关文章:
- 分派点击事件并保留击键修饰符
- 将Backbone.View重新注入DOM,保留事件而不是创建新事件
- 将作用域绑定到事件处理程序,但保留原始参数
- 将参数传递给函数,同时保留事件处理程序
- 离子事件-支架处于保留/选项卡上父/子问题
- 将参数传递给 jQuery .click WHILE 保留事件参数
- 保留动态创建的下拉列表's在事件窗口.history.back()上选择的值-JavaScript
- 更改URL并保留“更改”事件下拉列表中的值
- 保留当前点击事件jquery
- 使用promise.then时,是否可以保留在单击事件调用堆栈中
- 基于鼠标位置的滚动将点击事件保留在前台
- 交换两个 html 元素并保留其上的事件侦听器
- hammer.js - 如何在不传播“点击”事件的情况下注册“保留”事件
- 如何禁用谷歌分析网页浏览量跟踪,但保留事件跟踪
- Colorbox关闭、重新打开并保留事件
- React-如何与事件处理程序一起使用bind并保留事件对象
- 使用.html()来替换替换元素,有没有一种方法可以保留事件
- 为动态更改的元素保留事件
- 如何在排序后保留事件侦听器
- 如何用jQuery代替HTML,同时保留事件绑定