[英]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.