2011-08-04 48 views
5

如果我有一個事件處理程序,如:鏈上的兩個jQuery的事件

function A() { 
... 
} 

有可能分配給多個事件:

$("#test1").keyup(A); 
$("#test2").change(A); 

但我不知道是否有可能做到這一點只有一句話,是這樣的:

$("#test1").keyup, $("#test2").change (function() { 
    ... 
}); 
+0

我不這麼認爲,但後來,我不是專家。很想在這裏看到答案。 – Mrchief

+0

你想要在不同的ID上聲明的鏈式事件?你想要做什麼? –

+0

我想爲他們分配不同的ID和不同的事件相同的功能(我的情況:SELECT需要響應onChange事件和文本INPUT需要響應onKeyUp,但是是管理事件的同一個功能UpdateGraph) – Ivan

回答

0

簡答題?不是,長答案?一點也不。

對不起,沒有你想要的答案。但好消息是,除了這個限制之外,你的代碼看起來是獨一無二的。

+0

答案是:是的,它可以做到,看到@ jacek-kaniuk回答下面 –

+1

@RensdeNobel:答案仍然沒有。至少不是OP想要的方式,與特定元素/觸發器觸發功能的組合。當然,您可以聽所有要使用的觸發器/事件,以及觸發器/事件可能發生的所有元素,然後查看事件對象以確定是否檢測到正確的組合,但很可能更容易分開綁定每個組合。 –

3
$("#test2").bind('keyup change', A); 

/編輯爲不同的元素和事件 - 它是:

$("#test1, #test2").bind('keyup change', A); 

$("#test1").bind('keyup', A); 
$("#test2").bind('change', A); 

取決於你有什麼期望。沒有簡單的方法

+0

他們是2個不同的元素。大家都在這裏跳槍。 – Mrchief

+0

這將工作來監聽匹配jQuery選擇器的元素上的這兩個事件,但OP正在兩個不同的元素上查找兩個不同的事件。因此,只有「#test1」上的「關鍵字」或「#test2」上的「更改」,而不是「#test1」上的「更改」。 –

+0

@Jacek_FH - 編輯的第二個例子可以工作。但是,OP可能會堅持他們目前擁有的。編輯的第一個例子會將兩個事件都綁定到這兩個元素。 –

0

如果這些相同的元素,比如#test1,那麼你可以鏈中的方法

$('#test1').change(A).keyup(A); 

然而,你不能把它們連,或做任何類似的例子超過1元。

2

是的,是的。但它真的很可怕。

$("#test1").keyup(A).parent().find("#test2").change(A); 

http://jsfiddle.net/8RwZY/

還有這一暴行:

$("#test1, #test2").eq(0).keyup(A).end().eq(1).change(A); 

http://jsfiddle.net/8RwZY/1/

+0

哈哈!我會建議不要使用類似的編碼恐怖。 –

+0

@Jose Faeti - 完全同意。除非你想讓別人退出:p – karim79