Cách kích hoạt sự kiện thay đổi jQuery trong mã


177

Tôi có một sự kiện thay đổi đang hoạt động tốt nhưng tôi cần phải làm cho nó tái diễn.

Vì vậy, tôi có một chức năng được kích hoạt khi thay đổi sẽ "thay đổi" các lần thả xuống khác dựa trên bộ chọn lớp (thông báo "thả xuống", có thể có nhiều hơn một). Thay đổi proxy này không kích hoạt chức năng và do đó không thành công. Làm thế nào tôi có thể làm cho nó hoạt động?

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

Các đề xuất cho đến nay dường như có hiệu quả, nhưng khi sự kiện thay đổi kích hoạt một bài đăng ajax, bây giờ dường như thất bại ở đây. Tôi sẽ chơi xung quanh nó nhưng đó là một câu hỏi cho một câu hỏi khác mà tôi cảm thấy.


1
Cung cấp một số mã để chúng tôi có thể có một cái nhìn
Alex Rashkov

Làm thế nào chúng tôi có thể cho bạn biết làm thế nào để nó hoạt động, khi bạn chưa chỉ cho chúng tôi biết là gì?
dùng113716

1
Tôi nghĩ rằng đó là một khái niệm đơn giản và không cảm thấy mã là bắt buộc. Các câu trả lời cho đến nay dường như đã hiểu lời giải thích của tôi và vì vậy tôi đang thử giải pháp của họ bây giờ. Nếu tôi không có niềm vui, tôi sẽ gửi một số mã. Việc thực hiện của tôi thực sự phức tạp hơn nhiều.
4 giờ sáng

1
Sắp xếp nó, là một vấn đề với tôi thay đổi giá trị sau bài ajax. Cảm ơn tất cả vì sự giúp đỡ. Các đề xuất được đăng làm việc như một nét duyên dáng.
4 giờ sáng 22/11

Câu trả lời:


391

Sử dụng phương thức trigger ()

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

4
Có bất kỳ lợi ích cho điều này hơn change()? Hay đó chỉ là sở thích?
Joshua Pinter

6
@JoshPinter không có lợi ích thực sự, nhiều ưu tiên. Nhưng chắc chắn dễ dàng trừu tượng hóa như một tham số hơn là một tên phương thức.
John Hartsock

Đặt giá trị trước khi thực sự kích hoạt sự kiện thay đổi là cách tốt nhất !!
Kapil Yadav

33

đối với tôi $('#element').val('...').change()là cách tốt nhất


Vâng!, Tôi thích cái này
Juan Herrera

Đúng! nó cho phép chọn tùy chọn cùng một lúc. Tôi nghĩ rằng câu trả lời của bạn xứng đáng là tốt nhất ở đây.
Sergej Fomin

20

Dạng không tham số của phương thức change () kích hoạt một changesự kiện. Bạn có thể viết một cái gì đó như:

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


8

Sử dụng nó :

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

HOẶC LÀ

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

HOẶC LÀ

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

Kích hoạt có thể là bất kỳ sự kiện nào mà javascript hỗ trợ .. Hy vọng nó dễ hiểu đối với tất cả các Bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.