สำหรับการอ้างอิงในอนาคตกับทุกคนที่นี่มีปัญหาหากคุณกำลังเพิ่มช่องทำเครื่องหมายแบบไดนามิกคำตอบที่ถูกต้องที่ได้รับการยอมรับด้านบนจะไม่ทำงาน คุณจะต้องใช้ประโยชน์จากการมอบหมายกิจกรรมซึ่งอนุญาตให้โหนดหลักสามารถจับภาพเหตุการณ์ที่เกิดจากผู้สืบทอดที่เฉพาะเจาะจงและออกการเรียกกลับ
// $(<parent>).on('<event>', '<child>', callback);
$(document).on('change', '.checkbox', function() {
if(this.checked) {
// checkbox is checked
}
});
โปรดทราบว่ามันไม่จำเป็นต้องใช้document
สำหรับตัวเลือกหลัก เลือกโหนดพาเรนต์ที่เจาะจงมากขึ้นแทนเพื่อป้องกันการเผยแพร่เหตุการณ์ในระดับมากเกินไป
ตัวอย่างด้านล่างแสดงวิธีที่เหตุการณ์ของโหนด dom ที่เพิ่มแบบไดนามิกไม่ทริกเกอร์ผู้ฟังที่กำหนดไว้ก่อนหน้านี้
$postList = $('#post-list');
$postList.find('h1').on('click', onH1Clicked);
function onH1Clicked() {
alert($(this).text());
}
// simulate added content
var title = 2;
function generateRandomArticle(title) {
$postList.append('<article class="post"><h1>Title ' + title + '</h1></article>');
}
setTimeout(generateRandomArticle.bind(null, ++title), 1000);
setTimeout(generateRandomArticle.bind(null, ++title), 5000);
setTimeout(generateRandomArticle.bind(null, ++title), 10000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section id="post-list" class="list post-list">
<article class="post">
<h1>Title 1</h1>
</article>
<article class="post">
<h1>Title 2</h1>
</article>
</section>
ในขณะที่ตัวอย่างนี้แสดงการใช้งานของการมอบหมายเหตุการณ์ในการจับภาพเหตุการณ์สำหรับโหนดที่เฉพาะเจาะจง ( h1
ในกรณีนี้) และออกโทรกลับสำหรับเหตุการณ์ดังกล่าว
$postList = $('#post-list');
$postList.on('click', 'h1', onH1Clicked);
function onH1Clicked() {
alert($(this).text());
}
// simulate added content
var title = 2;
function generateRandomArticle(title) {
$postList.append('<article class="post"><h1>Title ' + title + '</h1></article>');
}
setTimeout(generateRandomArticle.bind(null, ++title), 1000); setTimeout(generateRandomArticle.bind(null, ++title), 5000); setTimeout(generateRandomArticle.bind(null, ++title), 10000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section id="post-list" class="list post-list">
<article class="post">
<h1>Title 1</h1>
</article>
<article class="post">
<h1>Title 2</h1>
</article>
</section>