.Prop'u jQuery kullanarak değiştirmek .change olayını tetiklemez


125

Onay kutusunda bir olay dinleyicim var:

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

Olay dinleyicim:

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

.propOnay kutusunu değiştiren başka bir olay dinleyicim var :

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

Onay kutusu DO SOMETHINGtetikleyicilerini işaretlediğimde . Üzerine tıkladığımda #button, .propdeğişiklikler ve onay kutusunun görsel olarak işaretini kaldırdığını, ancak DO SOMETHINGtetiklenmediğini görüyorum ...

Gözden kaçırdığım bir şey mi?


Yanıtlar:


196

Değişim, değer sayfadaki kullanıcı etkileşimi tarafından değiştirildiğinde ve kod kullanılarak değer değiştirildiğinde değil, tetiklenir.

Burada .change()veya .trigger("change")mülkü değiştirdikten sonra kullanmanız gerekir :

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

Çalışma Demosu


2
propDeğişim olayı oluşturmanın üstesinden geldiğinizi düşündüm
Kodlama Gone

1
Güzel. Teşekkürler. Konsepti kanıtlayan iyi bir demo. +1 Teşekkürler.
Kodlama Gone

Teşekkürler! Bu yüzden .prop (). Change () yönteminin benim açımdan işe yaramamasının nedeni, jQuery'yi çağırmanın biraz farklı bir yolu olan MeteorJS'de jQuery yapıyor olmamdır. Tam olarak senin yöntemini denedim ve işe yaradı.
fuzzybabybunny

@fuzzybabybunny: MeteorJS yüzünden değil. prop (), değişiklik olayını tetiklemez.
Milind Anantwar

@MilindAnantwar, Meteor kodunda ( Template.myTemplate.events) .prop ve ardından .change yapıyordum ve işe yaramadı. Daha sonra aynı jQuery kodunu altına koydum Template.myTemplate.renderedve iyi çalıştı.
fuzzybabybunny
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.