2013-04-07 96 views
0

我已經創建了一個插件,其中我用標準複選框替換爲像iPhone那樣的幻燈片按鈕。我可以用複選框綁定按鈕,即當我點擊YES按鈕時,複選框被選中,當我點擊NO按鈕時,複選框未被選中。同樣,我也爲單選按鈕創建了一個插件。現在的問題是,如果有人使用jquery檢查複選框,或者使用jquery選擇單選按鈕,我如何監聽此事件並更改使用插件創建的相應按鈕,因爲我無法控制選擇單選按鈕。使用jquery收聽複選框狀態

示例代碼(我想改變的事件上按一下按鈕被調用,因爲我不控制按鈕的點擊基本上,我要聽的情況下):

<input type="radio" name="radio" id="radio1"> Radio 1 </BR> 
<input type="radio" name="radio" id="radio2"> Radio 2 </BR> 
<input type="radio" name="radio" id="radio3"> Radio 3 </BR> 
<button>click me</button> 

$('input:radio').change(function(){ 
    alert($(this).attr('id') + ' is changed'); 
}); 

$('button').click(function(){ 
    $('#radio1').prop('checked', 'true'); 
}); 

http://jsfiddle.net/s24101984/v3Zfn/

+0

票代替prop'字符串的一個true/false來'! – ThiefMaster 2013-04-07 08:42:32

回答

1

根據https://stackoverflow.com/a/4836831/280222的設計,在複選框以編程方式更新時,JavaScript不會觸發事件。

如果你有過的代碼改變屬性控制,那麼你可以使用:

$('button').click(function(){ 
    $('#radio1').prop('checked', true).change(); 
}); 

在任何情況下:如果你正在編寫一個插件,我建議你讓它使用使用一個實現細節引擎蓋下方的複選框。嘗試爲您的用戶提供合適的API。這也會解決這個問題。

+0

這就是問題@Anders Abel,我無法控制此按鈕上的點擊事件。我必須以某種方式傾聽收音機屬性的變化:(當我創建一個插件時,我無法控制實際的應用程序代碼,請您詳細說明API部分? – 2013-04-07 08:48:18

0

好,我得到了這個答案,這裏的地方這已經回答了 LINK

我們可以使用掛鉤這一點,樣品的鏈接:爲共享

jQuery.attrHooks.checked = { 
    set: function (el, value) { 
     el.checked = value; 
     $(el).trigger('change'); 
    } 
}; 

同樣,我們有propHooks,的jsfiddle在鏈接太

http://jsfiddle.net/2nKPY/