कोड में jQuery परिवर्तन घटना को कैसे ट्रिगर करें


177

मेरे पास एक बदलाव की घटना है जो ठीक काम कर रही है लेकिन मुझे इसे पुन: प्राप्त करने की आवश्यकता है।

इसलिए मेरे पास एक फ़ंक्शन है जो परिवर्तन पर ट्रिगर होता है जो एक वर्ग चयनकर्ता (नोटिस "ड्रॉप डाउन" "के आधार पर अन्य ड्रॉप डाउन" बदल देगा ", एक से अधिक हो सकता है)। यह प्रॉक्सी परिवर्तन फ़ंक्शन को ट्रिगर नहीं करता है और इसलिए विफल रहता है। मैं किस तरह इसे काम पर लगा सकता हूँ?

कोड

$(document).ready(function () {
    var activeDropBox = null;

    $("select.drop-box").change(function () {
        var questionId = $(this).attr("questionId");
        var selectedAnswer = $(this).val();
        activeDropBox = this;

        alert(this.questionId);

        $.ajax(
        {
            type: "POST",
            url: answerChangedActionUrl,
            data: { questionId: questionId, selectedValue: selectedAnswer },
            success: function (data) {
                SetElementVisibility(data.ShowElement, questionId);
            }, error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert('XMLHttpRequest:' + XMLHttpRequest.responseText);
                alert('textStatus:' + textStatus);
                alert('errorThrown:' + errorThrown);
            }
        });
    });

    function SetElementVisibility(visible, questionId) {
        // I would like each child to then trigger the change event...
        $(".childOf" + questionId)[visible ? 'show' : 'hide']('slow');

        // Suggested code
        //$(".childOf" + questionId + " select").trigger("change");

        if (!visible) {
            $(".childOf" + questionId + " select").attr('selectedIndex', 0);
        }
    }
}

अब तक के सुझाव काम करने लगते हैं, लेकिन जैसे-जैसे बदलाव की घटना अजाक्स पोस्ट को ट्रिगर करती है, यह अब यहां विफल होता दिख रहा है। मैं इसके साथ खेलने जा रहा हूं, लेकिन मुझे लगता है कि यह एक और सवाल है।


1
कुछ कोड प्रदान करें ताकि हम देख सकें
एलेक्स राशकोव

हम आपको यह कैसे बता सकते हैं कि इसे कैसे प्राप्त किया जाए, जब आपने हमें यह नहीं दिखाया है कि यह क्या है?
1511 पर user113716

1
मैंने सोचा कि यह एक सरल अवधारणा थी और ऐसा नहीं लगता था कि कोड की आवश्यकता है। अब तक के उत्तर मेरी व्याख्या को समझ गए हैं और इसलिए मैं अब उनके समाधान की कोशिश कर रहा हूं। अगर मुझे कोई खुशी नहीं है तो मैं कुछ कोड पोस्ट करूंगा। मेरा कार्यान्वयन वास्तव में बहुत अधिक जटिल है।
4imble

1
यह सॉर्ट किया गया था, मेरे साथ एक समस्या थी जो अजाक्स पोस्ट के बाद मूल्य बदल रही थी। आप सब का सहायता के लिए धन्यवाद। पोस्ट किए गए सुझावों ने एक आकर्षण की तरह काम किया।
4imble

जवाबों:


391

ट्रिगर () विधि का उपयोग करें

$(selector).trigger("change");

4
क्या इस ओवर का कोई फायदा है change()? या यह सिर्फ वरीयता है?
जोशुआ पिंटर

6
@JoshPinter कोई वास्तविक लाभ नहीं, अधिक प्राथमिकता। लेकिन निश्चित रूप से एक विधि नाम की तुलना में पैरामीटर के रूप में अमूर्त करना आसान है।
जॉन हार्टसॉक

वास्तव में परिवर्तन की घटना को ट्रिगर करने से पहले एक मूल्य निर्धारित करना सबसे अच्छा तरीका है !!
कपिल यादव

33

मेरे $('#element').val('...').change()लिए सबसे अच्छा तरीका है।


हाँ!, मुझे यह पसंद है
जुआन

हाँ! यह एक ही समय पर विकल्प चुनने की अनुमति देता है। मुझे लगता है कि आपका उत्तर यहां सबसे अच्छा होने के योग्य है।
Sergej Fomin

20

परिवर्तन का पैरामीटर रहित रूप () विधि किसी changeघटना को ट्रिगर करती है । आप कुछ इस तरह लिख सकते हैं:

$(document).ready(function() {
    $("#yourInitialElementID").change(function() {
        // Do something here...
        $(".yourDropDownClass").change();
    });
});


8

उसका उपयोग करें :

$(selector).trigger("change");

या

$('#id').trigger("click");

या

$('.class').trigger(event);

ट्रिगर किसी भी घटना हो सकती है जो जावास्क्रिप्ट का समर्थन करती है .. आशा है कि यह आप सभी के लिए समझने में आसान है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.