Đây là HTML của tôi:Tôi làm cách nào để hiểu hành vi hộp kiểm này?
<input class='user_roles' id="chk" type=checkbox />
<input id="btn_on" type="button" value="on" />
<input id="btn_off" type="button" value="off" />
Và jQuery tôi:
$('#chk').click(function() {
if($(this).prop("checked") === true) {
alert ("checked");
}
else{
alert ("not checked");
}
});
$("[id$=btn_on]").click(function() {
$('#chk').click();
});
$("[id$=btn_off]").click(function() {
$('#chk').click();
});
Một ví dụ làm việc là here.
Khi hộp kiểm được nhấp bằng chuột, nó sẽ được kiểm tra ngay - tức là cảnh báo sẽ hiển thị "đã chọn". Tuy nhiên, khi một trong các nút được nhấp, gián tiếp gọi phương thức nhấp vào hộp kiểm, hộp kiểm không được nhấp cho đến khi sau mã nhấp chuột đã được chạy.
Để kiểm tra điều này, hãy nhấp vào hộp kiểm một vài lần bằng chuột và bạn sẽ thấy các cảnh báo "được chọn" và "không được chọn" tương ứng. Nhấp vào "Bật" và bạn sẽ thấy cảnh báo "không được chọn" và sau đó hộp kiểm sẽ được chọn. Nếu sau đó bạn nhấp vào "Tắt", bạn sẽ thấy "đã chọn", sau đó bỏ chọn hộp kiểm.
Lý do của hành vi này là gì? Làm cách nào để đảm bảo rằng hộp kiểm "kiểm tra" xảy ra trước khi mã trình nghe nhấp chuột được gọi, theo hành vi của chuột?
Bạn đang cố gắng loại bỏ điều này? Có một nút "bật/tắt" cho một hộp kiểm 'có vẻ hơi thừa. – Jack
@Jack, đây là một ví dụ rất đơn giản. Tôi có một người nghe nhấp chuột trên nhiều hộp kiểm và một nút để kiểm tra tất cả chúng cùng một lúc, do đó tôi cần biết rằng hành động kiểm tra xảy ra trước mã nhấp chuột. –