![](/img/trans.png)
[英]Which Click event handler is to use when changing the content dynamically in jQuery?
[英]Which jquery event to use?
當有一個復選框被標記時,我有一個這樣的代碼來啟用或禁用som文本輸入。
$(document).ready(function(){
$(":checkbox").change(function(){
if(this.checked){
$("input:text").attr('disabled', true);
} else {
$("input:text").attr('disabled', false);
}
});
});
當用戶點擊復選框時,它似乎有效,但javascript可以通過調用來更改復選框值:
$(":checkbox").attr('checked', true);
當javascript更改復選框時,不會觸發事件。 我嘗試過click()事件但是發生了同樣的事情。
任何的想法?
謝謝。
首先,讓我們減少那些事件處理程序,因為你將布爾值傳遞給.attr('disabled', bool)
並且.checked
是一個布爾值,讓我們利用它,如下所示:
$(function(){
$(":checkbox").change(function(){
$("input:text").attr('disabled', this.checked);
});
});
然后以編程方式更改值時,也會觸發change
事件,如下所示:
$(":checkbox").attr('checked', true).change();
沒有參數的.change()
是.trigger("change")
的快捷方式,這將導致您的事件處理程序運行。
手動調用change事件:
$(":checkbox").change();
很抱歉,如果我太簡單了,但是當你更改復選框值時,你不能讓JavaScript手動調用該事件嗎?
您可以嘗試手動觸發事件:
$(":checkbox").attr('checked', true);
$(":checkbox").change();
要么
$(":checkbox").attr('checked', true).change();
您可以手動將.trigger()
change event
:
$('input:checkbox').trigger('change');
你永遠不應該使用像:checkbox
這樣的選擇器。 它是通用*
選擇器的隱式用法,它將查詢您站點上的所有節點,這非常糟糕,這意味着它非常慢。
input:checkbox
仍將查詢所有復選框元素,您應該使用class
或id
來查詢特定元素。
參考: .trigger()
我不知道為什么通過javascript更改復選框不會觸發事件。 但是,我有一個解決方案。
使
function(){
if(this.checked){
$("input:text").attr('disabled', true);
} else {
$("input:text").attr('disabled', false);
}
}
作為一個功能。 比如函數cb_change_handler(){...}和u可以在通過javascript更改值時手動使用此函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.