2016-03-03 71 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); 
});