2012-08-29 67 views
3

我正在構建一個樣式複選框的jQuery插件。我隱藏真正的一個,然後插入按鈕,當點擊切換隱藏的複選框時。但是,如果我通過JavaScript檢查隱藏的複選框,假按鈕當然不會改變。我曾考慮過使用jQuery的.change()來改變它,但它也不會觸發JavaScript生成的更改,也不會實際單擊複選框。由javascript創建的複選框的觸發器更改

我希望插件是通用的,並且如果有人有類似「全部選中」或「取消全選」的按鈕來處理JavaScript,我希望我的假複選框按鈕相應地更改。

的問題是我應該用什麼方法來代替jQuery的變化(),以腕錶不僅通過鼠標點擊進行的更改,也由JavaScript例如$('checkbox').prop('checked', true);

EDIT2: 我意識到有是沒有適當的方式來觀看與JavaScript的屬性,除了檢查屬性是非常沒有吸引力的每個複選框每秒幾次。我決定不包括這樣低效的功能到我的插件,而是留給用戶也觸發改變,如果他想通過JavaScript處理值。

回答

6

你可以不看屬性。您可以設置一個計時器,每隔幾毫秒查找一次更改,但這並不令人滿意。

相反,你應該依賴於所有其他代碼觸發更改事件,當他們要像你這樣的插件(如果他們不這樣做也有可能的情況下)更新:

$(':checkbox').prop('checked', true).change(); 
0

您需要手動觸發更改事件。

$('#checkbox').attr('checked', 'checked').change(); 

看一看這樣的: JsFiddle

相關問題