2012-11-08 66 views
2

我有幾個對象我想附加相同的事件處理程序。到目前爲止,我這樣做:JQuery將相同的事件附加到2個對象

$(object).bind(event, function(event) { 
    // Code 
}); 
$(object2).bind(event, function(event) { 
    // Same code 
}); 
$(object3).bind(event, function(event) { 
    // Same code again 
}); 

我知道有什麼不對的這種方法(或有),但我不知道是否有結合相同的處理程序爲同一事件的速記方法幾個不同的對象。

編輯:我的意思是不是寫object1.bind(stuff); object2.bind(stuff); object3.bind(stuff); etc我想是這樣allObjects.bind(stuff)

+0

什麼是「對象」? – Bergi

+0

對象是一個HTML元素,由一個id選定。 – Bluefire

回答

1

怎麼樣,

$('selector1, selector2, selector3').bind(event, function(event) { 
    // Same code again 
}); 

注:假設object1是選擇器字符串。

+0

爲什麼downvote ..請留下一個理由..爲什麼你認爲這是錯誤的..好的謝謝! –

+0

不起作用。因爲'selector1'的搜索將在'selector2'內部,例如'$(「div」,「#nav」)' - > #nav中的所有div – andlrc

+0

+1,但取決於「對象」是什麼。 DOM選擇器可以與逗號連接(對於一個選擇器字符串),對於需要使用數組的實際對象:'jQuery([obj1,obj2,obj3])' – Bergi

2
var myFunc = function(event){ 
    // do something 
}; 

$(object).bind(event, myFunc); 
$(object2).bind(event, myFunc); 
$(object3).bind(event, myFunc);` 
3

你可以使用.add方法將其全部選中一次:

$(object1).add(object2).add(object3).bind(event,handler); 
0

只要定義包含功能的低音,然後將對象綁定每一個變量。 像這樣:

var fn = function(event) {}; 
$(object).bind(fn); 
$(object2).bind(fn); 
$(object3).bind(fn); 

Apendix:您可以將一個迭代存儲您objecs在陣列上他們:

$([object, object2, object3]).each(function(){ 
    this.bind(fn); 
}); 

不過,我不認爲這是一個很好的編碼風格....

+0

我的意思是,我不想寫'object1.bind(stuff),object2.bind(stuff)',我想要'allObjects.bind(stuff)'這樣的東西。 – Bluefire

+0

@Stefan:第二個不符合你的期望。不要像這樣使用'$ .fn.each'。 – Bergi

+0

嗨,你能解釋一下我的原因嗎?我瘋狂的一個樣本,它工作正常(即使我不會像這樣使用它)。示例:http://fiddle.jshell.net/CD6Np/ – Stefan

相關問題