2011-01-20 69 views
0

我們知道多次調用$(document).ready();在同一頁面是可能的。我需要類似的點擊事件。jQuery:在同一元素上執行多個操作,但是在兩個不同的時間點

現狀: 另一隊實現了這個地方在外部JS文件:

$('#element').live('click', function() { /* Do this */}); 

這是對#element現場()點擊收聽。我無法修改此代碼或該文件,但我需要對同一事件上的相同元素執行其他操作。所以,點擊#element時會發生兩個動作。換句話說,我需要這個等價物:

$('#element').live('click', function() { /* Do this */}); 
/* Some code later... */ 
$('#element').live('click', function() { /* Add another action */}); 

我試着做了上面的事情,但第二個調用不會觸發。它必須是.live(),因爲#element是動態添加的。

有什麼辦法可以將更多操作添加到#element上的相同事件上嗎?謝謝。

+0

它看起來像他們的事件處理程序返回false。這會阻止我的電話嗎? $(「#element」)。live('click',function(){p.log_in(); return false;}); – Stephen

回答

1

他們返回false,並且阻止您的事件被解僱。見http://api.jquery.com/bind/

返回從處理程序錯誤是 相當於事件 調用對象的兩個 .preventDefault()和 .stopPropagation()。

+0

堅果...感謝您在jQuery文檔中的引用。雖然我無法改變其他團隊的代碼,但我只是找到了另一種基於ChessWhiz的回答,通過不同方式查看問題來解決此問題的方法。我發現我的團隊控制着HTML。我在#element上添加了一個新的類名,並使用.live()作爲目標。這樣可行。 – Stephen

0

我建議實際解除現有的live()調用,然後將其與自己的代碼一起包含在您自己的方法中可能會更容易。假設你被允許並且這樣做是可行的。

+0

他們的調用位於單獨的庫和名稱空間中,因此我無法解除綁定並將其代碼添加到我的代碼中。 – Stephen

0

每次綁定事件處理程序時,都會將其安裝在處理程序鏈上,所有這些都將被調用。因此,除了您不能更改的代碼之外,您還可以綁定自己

+0

它看起來像他們的事件處理程序返回false。這會阻止我的加入嗎? $(「#element」)。live('click',function(){p.log_in(); return false;}); – Stephen

相關問題