元素我使用jQuery和創建事件處理程序是這樣的:jQuery的忽略與「禁用」
$('#some_selector a.add').live('click', function(){...});
不過,我需要不執行處理程序時,一個元素disabled
類。然後我寫了下面來實現這一點:
$('#some_selector a.add:not(.disabled)').live('click', function(){...});
但我看膩了,我需要添加:not(.disabled)
的所有地方,有時我忘了加上它等等。此外,如果我有一個錨點元素,並且我的處理程序會阻止對其執行默認操作,那麼添加:not(.disabled)
將導致瀏覽器打開下一頁,而不是無所事事。
那麼當元素滿足某些條件(如「禁用」類)時,是否有辦法在處理程序執行時設置自動禁用?
好戲!但我不明白如何保證這個處理程序將被首先執行?我試着只使用''event.stopPropagation()''和''event.preventDefault()'',但它並沒有這樣工作。 – dragoon
@dragoon:'stopPropagation'不會因爲'live'的工作方式而起作用。執行順序是由jQuery保證的。我無法告訴你他們究竟做了些什麼,但是源代碼是免費的;)但是,你真的應該考慮@ mu的答案,這在語義上更加正確。 –