কোডে কীভাবে jQuery পরিবর্তন ইভেন্ট ট্রিগার করবেন to


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
কিছু কোড সরবরাহ করুন যাতে আমাদের নজর দেওয়া যায়
অ্যালেক্স রাশকভ

কিভাবে আমরা আপনার সাথে বলতে পারেন কিভাবে এটা কাজ পেতে, যখন আপনি আমাদের দেখানো হয়নি কি এটা হয়?
ব্যবহারকারী 113716

1
আমি ভেবেছিলাম এটি একটি সাধারণ ধারণা এবং মনে হয় না কোডের প্রয়োজনীয়তা রয়েছে। উত্তরগুলি এখনও পর্যন্ত আমার ব্যাখ্যাটি বুঝতে পেরেছে বলে মনে হয় এবং তাই এখনই আমি তাদের সমাধানগুলি চেষ্টা করছি। আমার কোনও আনন্দ না থাকলে আমি কিছু কোড পোস্ট করব। আমার বাস্তবায়ন আসলে অনেক বেশি জটিল।
ইঞ্চি

1
এটি সাজানো হয়েছে, এজাক্স পোস্টের পরে মান পরিবর্তন করতে আমার একটি সমস্যা ছিল। সাহায্যের জন্য সবাইকে ধন্যবাদ। পোস্ট করা পরামর্শগুলি কবজির মতো কাজ করেছিল।
ইম্বিল

উত্তর:


391

ট্রিগার () পদ্ধতিটি ব্যবহার করুন

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

4
এটির কোনও লাভ কি change()? নাকি এটুকু পছন্দ?
জোশুয়া পিন্টার

6
@ জোশপিন্টারে কোনও আসল সুবিধা নয়, আরও পছন্দ। তবে কোনও পদ্ধতির নামের চেয়ে প্যারামিটার হিসাবে বিমূর্ত করা অবশ্যই সহজ।
জন হার্টসক

বাস্তবে পরিবর্তন ইভেন্টটি ট্রিগার করার আগে একটি মান নির্ধারণ করাই সেরা উপায় !!
কপিল যাদব

33

আমার $('#element').val('...').change()জন্য সবচেয়ে ভাল উপায়।


হ্যাঁ, আমি এটি পছন্দ করি
হুয়ান হেরেরা

হ্যাঁ! এটি একই সময়ে বিকল্প নির্বাচন করতে দেয়। আমি মনে করি আপনার উত্তরটি এখানে সর্বোত্তম হওয়ার যোগ্য।
সার্জেজ ফমিন

20

পরিবর্তন () পদ্ধতির পরামিতিহীন রূপটি একটি changeইভেন্টকে ট্রিগার করে । আপনি যেমন কিছু লিখতে পারেন:

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


8

এটি ব্যবহার করুন:

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

অথবা

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

অথবা

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

ট্রিগার জাভাস্ক্রিপ্ট সমর্থন করে এমন কোনও ইভেন্ট হতে পারে .. আশা করি এটি আপনার সকলের পক্ষে বোধগম্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.