我使用jQuery 1.6.2。當該元素出現在頁面上時,我只想調用一次點擊事件。這是我的選擇:元素出現後立即致電點擊事件?
span[resizer='north'][title=''] :first-child"
這可以觸發點擊事件工作:
$("span[resizer='north'][title=''] :first-child").click();
我怎樣才能使它只有一次工作或該元素後出現在網頁上?
我使用jQuery 1.6.2。當該元素出現在頁面上時,我只想調用一次點擊事件。這是我的選擇:元素出現後立即致電點擊事件?
span[resizer='north'][title=''] :first-child"
這可以觸發點擊事件工作:
$("span[resizer='north'][title=''] :first-child").click();
我怎樣才能使它只有一次工作或該元素後出現在網頁上?
答案根據我的理解你的最新評論:我的意思是我只會打電話點擊事件一次。我們假設有一個按鈕。我將調用該按鈕的單擊事件一次。我的意思是我會以編程方式點擊那個按鈕。
$('button').click(function() {
$('span[resizer='north'][title='']:first-child').click();
$(this).unbind('click');
});
你可以使用DOMNodeInserted
事件時,新元素動態插入檢測。
var alreadyclicked = false; // variable to check that it will be clicked just once
$(document).bind('DOMNodeInserted', function(e) {
if (!alreadyclicked){
$("span[resizer='north'][title=''] :first-child").click();
alreadyclicked = true;
}
});
更新
的DOMNodeInserted
事件與其他mutation events一起棄用。一些瀏覽器支持它,但看起來這不會持續很長時間。
您可以使用mutation observers,而不是跟蹤變化的DOM
var alreadyclicked = false;
var observer = new MutationObserver(function(mutations, observer){
//if new nodes were added
if(mutations[0].addedNodes.length && !alreadyclicked)
$("span[resizer='north'][title=''] :first-child").click();
alreadyclicked = true;
});
observer.observe(document, { childList:true, subtree:true });
使用自定義事件,有一個委託處理程序使用附接的。一()。
事件有2個組件,觸發和處理。不要關注它被觸發了多少次,關注它被處理了多少次。
$("document").one("myclick", "span[resizer='north'][title=''] :first-child", function(e) {
do something...;
$(this).click(); //if you actually need the "click"
});
$("span[resizer='north'][title=''] :first-child").trigger("myclick");
這個例子將意味着它的「處理」一次。這裏的其他答案可用於確保在文檔準備好之後添加元素時觸發它。
你也可以使用一個pub/sub,這會讓它更容易。然後,您只需從ajax或任何可添加元素的代碼觸發您的自定義事件,而不必擔心專門針對元素。訂閱中的最後一行代碼將取消訂閱。
使用'off()'解除點擊事件 – Mivaweb 2014-12-02 15:29:35
該元素是通過AJAX加載的,還是通常在DOM中加載? – j08691 2014-12-02 15:29:54
@VDesign'off()'不是jQuery 1.6.2的一部分嗎? – kamaci 2014-12-02 15:30:46