首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在保留事件参数的同时将参数传递给jQuery .click

在保留事件参数的同时将参数传递给jQuery .click
EN

Stack Overflow用户
提问于 2012-08-12 22:13:37
回答 1查看 150关注 0票数 1

我需要使用绑定click事件到DOM中的一个元素,同时能够动态传递参数,包括事件对象。我的当前脚本使用以下内容:

代码语言:javascript
复制
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 = 4id = 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);

也就是说,它使用counterid的最后一个存储值。我猜这是因为bind是如何工作的,在单击元素时传递参数,而不是在此之前。我不知道如何解决这个问题,除非我能以某种方式欺骗函数的范围?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-12 22:20:10

参数可以通过event.data对象访问,如下所示

代码语言:javascript
复制
dynamo.awards.tooltip.ini(e.data.c, e.data.i);

http://api.jquery.com/bind/#passing-event-data

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11926261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档