Koddaki jQuery değişiklik olayı nasıl tetiklenir


177

İyi çalışan bir değişim etkinliğim var ama bunu tekrarlamak zorundayım.

Bu yüzden bir sınıf seçicisine ("açılan" dikkat edin, "birden fazla olabilir) diğer açılan aşağı" değişecek "değişim tetiklenen bir işlevi var. Bu proxy değişikliği işlevi tetiklemez ve bu nedenle başarısız olur. Nasıl çalıştırabilirim?

kod

$(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);
        }
    }
}

Şimdiye kadar öneriler işe yarıyor gibi görünüyor, ancak değişiklik olayı bir ajax gönderisini tetiklediğinde şimdi burada başarısız gibi görünüyor. Onunla oynayacağım ama bu hissettiğim başka bir soru için bir şey.


1
Bakabilmemiz için bazı kodlar sağlayın
Alex Rashkov

Bize ne olduğunu göstermediğinizde , size nasıl işe yarayacağını nasıl söyleyebiliriz ?
user113716

1
Ben basit bir kavram olduğunu düşündüm ve kod gerekli olduğunu hissetmedim. Şimdiye kadar cevaplar açıklamamı anlamış görünüyor ve bu yüzden şimdi çözümlerini deniyorum. Eğer hiç neşem yoksa bazı kodlar gönderirim. Uygulamam aslında çok daha karmaşık.
4

1
Sıralama, ajax yazıdan sonra değeri değiştirme ile ilgili bir sorun oldu. Yardımlarınız için hepinize teşekkürler. Gönderilen öneriler bir cazibe gibi çalıştı.
4imble

Yanıtlar:


391

Kullanım tetik () yöntemini

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

4
Bunun bir faydası var mı change()? Yoksa sadece tercih mi?
Joshua Pinter

6
@JoshPinter hiçbir gerçek yarar, daha fazla tercih. Ancak parametre olarak soyutlamak kesinlikle bir yöntem adından daha kolaydır.
John Hartsock

Değişim olayını tetiklemeden önce bir değer ayarlamak en iyi yoldur !!
Kapil Yadav


20

Change () yönteminin parametresiz formu bir changeolayı tetikler . Şöyle bir şey yazabilirsiniz:

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


8

Bunu kullan :

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

VEYA

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

VEYA

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

Tetik javascript desteği herhangi bir olay olabilir .. Umarım hepiniz için anlaşılabilir kolaydır.

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.