การเปลี่ยน. prop โดยใช้ jQuery ไม่ทริกเกอร์. เปลี่ยนเหตุการณ์


125

ฉันมีผู้ฟังเหตุการณ์ในช่องทำเครื่องหมาย:

<input type="checkbox" name="something">

ผู้ฟังเหตุการณ์ของฉัน:

$('input[type="checkbox"][name="something"]').change(function() { 
    //DO SOMETHING 
});

ฉันมีผู้ฟังเหตุการณ์อื่นที่มีการเปลี่ยนแปลง.propของช่องทำเครื่องหมาย:

$('#button').click(function() { 
    $('input[type="checkbox"][name="something"]').prop("checked", false);
});

เมื่อฉันทำเครื่องหมายในช่องDO SOMETHINGทริกเกอร์ เมื่อฉันคลิกที่#buttonการ.propเปลี่ยนแปลงและฉันเห็นช่องทำเครื่องหมายที่มองไม่เห็น แต่DO SOMETHINGไม่ได้รับการทริกเกอร์ ...

บางสิ่งที่ฉันมองข้ามไป?


คำตอบ:


197

เหตุการณ์การเปลี่ยนแปลงจะเริ่มทำงานเมื่อค่าถูกเปลี่ยนแปลงโดยการโต้ตอบของผู้ใช้ในเพจไม่ใช่เมื่อมีการแก้ไขค่าโดยใช้โค้ด

ที่นี่คุณต้องใช้.change()หรือ.trigger("change")หลังจากเปลี่ยนคุณสมบัติ:

$('input[type="checkbox"][name="something"]').prop("checked", false).change();

การสาธิตการทำงาน


2
ฉันคิดว่าpropดูแลการสร้างเหตุการณ์การเปลี่ยนแปลง?
Gone Coding

1
เย็น. ขอบคุณ การสาธิตที่ดีพิสูจน์แนวคิด +1 ขอบคุณ
Gone Coding

ขอบคุณ! ดังนั้นสาเหตุที่. prop (). change () ไม่ทำงานในตอนท้ายของฉันเป็นเพราะฉันกำลังทำ jQuery ใน MeteorJS ซึ่งมีวิธีการเรียก jQuery ที่แตกต่างกันเล็กน้อย ฉันลองทำตามแบบของคุณแล้วและได้ผล
fuzzybabybunny

@fuzzybabybunny: ไม่ใช่เพราะ MeteorJS prop () ไม่ทริกเกอร์เหตุการณ์การเปลี่ยนแปลง
Milind Anantwar

@MilindAnantwar ฉันกำลังทำ. prop ตามด้วย. เปลี่ยนรหัสดาวตก ( Template.myTemplate.events) และมันไม่ได้ผล จากนั้นฉันใส่รหัส jQuery ที่เหมือนกันTemplate.myTemplate.renderedและมันก็ทำงานได้ดี
fuzzybabybunny
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.