2011-10-12 66 views
5

有沒有辦法允許其他綁定事件到同一個對象(如文本框)首先觸發/觸發?允許其他綁定元素事件先觸發嗎?

說2個事件綁定到同一個文本框。這兩個keyup事件。在我的例子中,有一個插件綁定自己的事件,但是代碼的寫法是先綁定我的事件。我不想讓我的第一槍開火。

$("#firstname").keyup(function() { 
    // ...is there anyway to allow the other keyup event to fire first, from here? 
    // do my work here... 
} 

$("#firstname").keyup(function() { 
    // the plugin work. 
} 

我需要使用鍵控,已經有按鍵事件。

回答

1

你應該真的重寫你的代碼只有一個keyup綁定到該事件,但如果這是不可行的,你可以用信號量來做到這一點,並將你的功能從綁定中分離出來,因此可以從綁定中調用它。 ..

var semaphore = 0; // on init 

$("#firstname").keyup(function() { // this one should run first 
semaphore++; 

if (semaphore === 0) { 
    first_action(); 
} 
} 

$("#firstname").keyup(function() { // this one should run second 
if (semaphore > 1) { // you know the first event fired 
    second_action(); 
} 
else if (semaphore < 1) { 
    first_action(); 
    second_action(); 
    semaphore++; 
} 
} 
相關問題