JQuery का उपयोग करके .prop बदलने से .change घटना नहीं होती है


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ट्रिगर नहीं होता है ...

कुछ मैं देख रहा हूँ?


जवाबों:


196

परिवर्तन घटना को निकाल दिया जाता है जब मूल्य पृष्ठ पर उपयोगकर्ताओं द्वारा बातचीत से बदल दिया जाता है, न कि जब मूल्य को कोड का उपयोग करके संशोधित किया जाता है।

यहां आपको संपत्ति बदलने .change()या उपयोग करने की आवश्यकता है .trigger("change"):

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

वर्किंग डेमो


2
मैंने सोचा कि propबदलाव की पीढ़ी का ख्याल रखा जाए?
कोडिंग

1
ठंडा। धन्यवाद। अच्छा डेमो अवधारणा साबित कर रहा है। +1 धन्यवाद।
कोडिंग हुई

धन्यवाद! तो क्यों .prop () परिवर्तन () मेरे अंत पर काम नहीं किया है क्योंकि मैं MeteorJS में jQuery कर रहा हूं, जिसमें jQuery को कॉल करने का थोड़ा अलग तरीका है। मैंने इसे अपने तरीके से आज़माया और यह काम कर गया।
fuzzybabybunny

@fuzzybabybunny: यह उल्का के कारण नहीं है। प्रोप () परिवर्तन घटना को ट्रिगर नहीं करता है।
मिलिंद अनंतवर

@MilindAnantwar, मैं कर रहा था। इसके बाद Meteor कोड (.change Template.myTemplate.events) में काम नहीं किया। मैंने फिर उसी सटीक jQuery कोड के तहत रखा Template.myTemplate.renderedऔर यह ठीक चला।
fuzzybabybunny
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.