[英]onClick does not function inside a dynamically generated div
我有一個jQuery代碼,可以動態生成一個div
問題是標簽的onclick函數未調用所需的函數
這是代碼
$("#new").append('
<ul class="#...#">
<li>
<a href="./d.html?n1='+item[0]+'&n2='+item[2]+'&n3='+item[3]+'">
<input type="hidden" value='+item[0]+'>
<img style="height: 64px; width: 64px;" class="#...#"
src="image.png" width="40" height="40" />
<span class="#...#">
<b>'+item[0]+'</b>
'+item[1]+'......
</span>
</a>
<br />
<div>
<a onClick="insert();" href="#">
<i class="icon1"></i>
</a>
<a href="2.php?q='+q+'&n='+item[0]+'" id="icon2" name="icon2">
<i class="icon2"></i>
</a>
</div>
</li>
</ul>
');
我正在使用上面的代碼作為ajax成功函數
該標簽並沒有叫我搜索的錯誤插入()函數,但找不到
這是怎么了? 提前Thsnks
使用JavaScript事件委托來分離關注點:
$(function() {
$(document.body).on('click', 'ul.someClass div a', function() {
// insert() method logic goes here
});
});
第二個參數指定事件目標。 此事件綁定到文檔的正文,因此始終存在。 目標DOM對象可以在以后的某個時間通過AJAX生成或從文檔中刪除。 實際的目標檢查是在用戶實際單擊某項時發生的。
另外,在代碼中將類屬性添加到<div>
或<a>
可能有助於提高可讀性。 例如:
<div class="buttons">
<a class="btn-insert" onClick="insert();" href="#">
<i class="icon1"></i>
</a>
<a href="2.php?q='+q+'&n='+item[0]+'" id="icon2" name="icon2">
<i class="icon2"></i>
</a>
</div>
然后可以將jQuery on()
方法的目標屬性簡化為'.btn-insert'
將自定義類(例如“ catchClick”)添加到您需要捕獲其click事件的元素。
var linkToAdd = '<a class="catchClick" href="#">My link</a>';
var $linkToAdd = $(linkToAdd);
$('#new').append($linkToAdd);
然后,以下代碼將為該元素的點擊設置處理程序。
之所以起作用,是因為click事件是將dom層次結構冒泡到文檔元素的。 因此,您可以將偵聽器附加到document元素。
$(document).on('click', '.catchClick', function(e) {
// do your stuff here
// you probably need to get a jquery reference to the element that was clicked:
var $this = $(this);
// you probably want to stop the event's default actions so we'll add this:
e.stopPropagation();
e.preventDefault();
});
在將新的可單擊項添加到文檔之后,然后在每次將新的可單擊項添加到文檔之后,設置單擊事件處理程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.