簡體   English   中英

jQuery .click()在自定義函數之前執行默認操作

[英]jQuery .click() perform the default action before the custom function

這是我的代碼,我有兩個復選框,並希望保持禁用狀態,直到另一個啟用:

$(function(){
    $('#remember').live('click', function(event){
        if($('#remember').is(':checked')){
            $('#keepIn').removeAttr('disabled');
        }
        else
            $('#keepIn').attr('disabled', 'disabled');
    });
});

問題在於此函數在默認操作之前執行,並且當我單擊第一個$('#remember').is(':checked')返回false(舊值)而不是true。

您可以改為使用change事件:

$('#remember').live('change', function(event) {
    if (this.checked) {
        $('#keepIn').removeAttr('disabled');
    } else {
        $('#keepIn').attr('disabled', 'disabled');
    }
});

演示: http : //jsfiddle.net/jP3NY/


注意:不建議使用live方法。 你應該更好地利用ondelegate

對於較新版本的jQuery,解決方案如下:

$('body').on('change', '#remember', function(event) {
    $('#keepIn').prop('disabled', !this.checked);
});

除了body您可以使用#remember任何父元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM