簡體   English   中英

jQuery問題:函數在新創建的HTML元素上不起作用

[英]jQuery Issue: functions won't work on newly created HTML element

我有兩個函數:一個在單擊按鈕時創建一個新的<textarea> ,另一個函數在單擊<textarea> (或模糊,更改等)執行操作。第二個函數根據以下內容選擇元素:類名。 似乎第二個功能僅適用於加載頁面時存在的那些匹配元素,但不會在任何新創建的<textarea>元素上激活。 誰能弄清楚為什么以及如何解決這個問題? 您將在下面找到代碼。 謝謝。 -傑克

$('#add').click(function() {
    $(this).before("<textarea class='test'></textarea>")
})

$('.test').blur(function () {
    alert('just a test')
})

jQuery將操作分配給使用.test類標記的元素時,您創建的textarea不在周圍。 您將需要live()函數來按需進行此工作。

$('.test').live('blur', function () {
    alert('just a test')
});

現在,任何帶有.test標記的元素都將自動在模糊時綁定指定的函數,無論何時創建。

您可以直接綁定它:

$('#add').click(function() {
    $(this).before("<textarea class='test'></textarea>").prev().blur(function () {
        alert('just a test');
    });
});

或者使用jQuery的.delegate()方法將處理程序放置在#add的父#add

$('#add').click(function() {
    $(this).before("<textarea class='test'></textarea>")
}).parent().delegate('.test','blur',function() {
    alert('just a test');
});

與使用.live()相比,這是一種更有效的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM