2013-10-31 195 views
0

我有我的文檔主體click事件:防止點擊元素上的點擊事件?

$("body").on('click.findElem', function(e) {     
      e.stopPropagation(); 
      e.preventDefault();  
      self.hinter(e.target);    
      return false; 
     }); 

它基本上抓住了點擊目標,並做一些事情吧。但是,有些目標已經有點擊事件,並且他們阻止了我的點擊被執行。我如何解決這個問題?我嘗試解除綁定,但點擊甚至根本無法實際執行解除綁定。

回答

1

e.stopImmediatePropagation()完成這項工作,但前提是您的處理程序在任何其他處理程序存在之前執行。

不幸的是,沒有辦法插入在第一位置自己的處理程序 - 但你可以使用這個討厭的黑客,如果其他處理程序中使用jQuery,也勢必:How do you force your javascript event to run first, regardless of the order in which the events were added?

如果你真的需要這一點,你可能想在捕捉模式下使用本機DOM API綁定事件處理程序:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener

捕捉處理程序在氣泡處理程序(由jQuery和大多數其他腳本使用)之前觸發,因此您有很高的機會首先執行處理程序。

0

試試這個,看看demo

$("body").on("click", ".clickme:not(.clicked)", function(event) { 
    $(this).addClass('clicked'); 
    alert('here'); 
}); 
0

我傾向於不使用上,並與綁定/解除綁定組合杆。 我有一些頁面重新加載部分內容,然後必須重新綁定事件。 我tipically做這樣的事情

$(".theobjectsiwant").unbind("click").bind("click", function() { 
    alert('hi there'); 
}); 

如果你想/必須堅持使用上()函數,你不應該混在()的解除綁定(),並嘗試與.off("click").on("click")

類似的方法

點擊這裏取樣http://api.jquery.com/off/