2012-10-31 15 views
2

我想使用one jQuery函數,它只執行一次特定函數,但與on jQuery函數結合使用,因爲元素還沒有呈現。jQuery - 與一個()和on()函數的組合

所以,我需要以這種方式使用'on'函數來綁定未渲染元素的函數。

$(document).on('click',',myElement',function(){ 



}); 

如何實現'one'功能,以執行我的代碼只爲第一次單擊元素?

+0

您是指每個元素或總共一次? – pimvdb

+0

該函數正在執行一些計算並對其他元素執行操作。如果該功能執行兩次或更多,則完全沒有問題。無論如何,我覺得每次點擊執行一些JavaScript代碼是不對的,因爲只有執行一次就足夠了。這是我的擔憂。 – gotqn

回答

1

.one()方法支持事件委託。這將意味着回調每個匹配元素運行一次,而不是一次:

$(document).one('click', '.myElement', function() { 
    // Do stuff 
}); 

但是,如果你的意思是你想要的事件處理程序,爲每個選擇匹配的元素執行一次,最簡單的解決方案可能是在處理程序執行後向元素添加一些數據。然後,您可以檢查是否存在該數據以確定是否繼續使用事件處理程序:

$(document).on('click', '.myElement', function() { 
    if (!$(this).data("done")) { 
     // Do stuff 
    } else { 
     $(this).data("done", true); 
    } 
}); 
+0

它總共運行一次,而OP相對每個元素想要一次。 – pimvdb

+0

啊,是的,這是更有意義。這個問題並不清楚。 –