2014-05-02 25 views
0

所有事件都綁定爲我們的引導程序的一部分。例如,具有'bootstrapclick'類的定位標記綁定到單擊事件。現在,我想編寫額外的驗證onclick錨點元素,所以我寫了一個函數onclick事件。但這是在引導點擊事件後觸發的。點擊事件綁定多個地方,如何優先考慮並觸發特定事件

形式

<a href='#' id='mylink' class='bootstrapclick'> Click here </a> 

JQuery的

var link = $('#mylink')[0]; //=> document.getElementById('mylink'); 
link.onclick = function(e) { 
    //do additional validation 
    //and prevent bootstrap click event 
}; 

推薦我怎麼我的優先順序點擊事件率先開炮,這樣我就可以防止火災引導的單擊事件。

+0

如果要停止引導click事件完全可以用'.off()'。 –

+0

更改爲$('#mylink')。你錯過了# –

+0

嗨,使用.off()已經太遲了,因爲bootstrap點擊事件是先被觸發,然後是觸發我的自定義事件。 – user3432047

回答

0

試試這個

編輯:這將觸發對文件準備 - 它會刪除綁定到該控件的所有事件,並會增加onclick事件處理程序與你的邏輯。如果引導程序事件處理程序在文檔準備好之後添加,則需要查找何時添加引導程序事件處理程序,並在添加引用後將其刪除。x.off();應該這樣做。而是採用addEventListener

$(function(){ 
var x = $('#mylink'); 
x.off(); 
x.on('click', function(){ 

//... 
}); 
}); 
+0

問題在於此事件稍後將被引發至自舉事件。所以$(this).off()爲時已晚? – user3432047

+0

@ user3432047請檢查我的編輯 –

0

捕獲事件:{那麼事件將傳播任何事件之前被解僱}

如果爲真,將useCapture指示用戶希望啓動 捕獲。啓動捕獲後,指定類型爲 的所有事件將在調度 到DOM樹下的任何EventTargets之前分派給註冊的偵聽器。 通過樹向上冒泡的事件不會觸發指定使用捕獲的監聽器 。

var link = $('#mylink')[0]; //=> document.getElementById('mylink'); 
link.addEventListener("click", function(e){ 
    //do additional validation 
    //and prevent bootstrap click event 
    if(notValid) // or whatever you use to validate 
     e.stopImmediatePropagation(); // this will prevent bootstrap click handler to be fired 
}, true); 

現在,我不知道如何自舉綁定自己的事件。

0

使用.off() jQuery中

$('#mylink').on("click" , function(event) { 
     $(this).off("click"); 
     event.preventDefault() 
     // do stuff here 
}