2016-03-03 98 views
0

我想使用jQuery的click()将一个元素与参数绑定在一起。然后我需要在某个时候直接调用这个函数。这是我在做什么目前:与功能的jQuery绑定事件:将参数传递给用户的功能以更好的方式?

function f1(e){ 
    f(e.data.a, e.data.b, e.data.c); 
} 

function f(a, b, c){ 
    //... 
} 
var a = 1, b = 2, c = 3; 
$('#someElement').click({a: a, b: b, c: c}, f1); //bind function 
f(a, b, c); //call directly 

我觉得它多余的,因为我有很多像这样的功能。我相信有更好的方法来实现这一点。非常感谢你。

回答

0

我想你可以直接打电话给你的函数类似这样的

var a = 1, b = 2, c = 3; 
$('#someElement').bind("click",function(){ 
    f(a, b, c); //call directly 
}); 
+0

这如果A,B的值,C是动态变化不起作用,说内部的for循环,其中a,b,c是在每个循环不同。我发现在调用f()时,b c的值停留在最后一个循环。 – user3545752

+0

我认为这很正常,当你使用for循环时,a,b,c正在改变数值。当你点击你的元素时,你的函数将调用a,b,c所采用的最后一个值。即使你绑定的事件很多时候,它只是在最后拍摄的绑定事件帐户 –

+0

这是否意味着我必须使用2个函数f&F1,为了处理for循环? – user3545752

1

你可以使用数据属性来获得每个元素的参数,你会点击

HTML

<div class="someElement" data-a="1" data-b="2" data-c="3"></div> 
<div class="someElement" data-a="4" data-b="5" data-c="6"></div> 

JS

function f(a, b, c) { 
    alert(a + " " + b + " " + c); 
} 

$('.someElement').click(function() { 
    var a = $(this).attr('data-a'), 
    b = $(this).attr('data-b'), 
    c = $(this).attr('data-c'); 
    f(a, b, c); 
});