jQuery on('toggle')不能一起工作

时间:2014-08-22 08:04:54

标签: jquery

想知道如何实现切换,它只在点击时停用输入“meta_website_url”但不会回来。

<input type="checkbox" id="PostWebsite" class="calculate-total" checked="checked">
<input id="meta_website_url" type="text" name="meta[6]" value="">

$('body').on('click', '#PostWebsite', function(){
    if (!$(this).attr('checked') || $(this).attr('checked') == 'off'){       
       $(this).attr('checked','on');
       $("#meta_website_url").attr("disabled", true);
    }
    else if ($(this).attr('checked') == 'off'){
       $(this).attr('checked','off');
       $("#meta_website_url").attr("disabled", false);
    }
});

2 个答案:

答案 0 :(得分:0)

这是因为你的if声明。您没有检查checked属性是否未设置为&#34; off&#34;在第一个声明中。您的if语句有效地说:如果设置为off,请执行此操作,否则如果设置为off,请执行此操作 - 后者永远不会被打了。

变化:

if (!$(this).attr('checked') || $(this).attr('checked') == 'off'){
                                                        ^^

要:

if (!$(this).attr('checked') || $(this).attr('checked') != 'off'){

作为旁注,如果您使用的是jQuery 1.8+,则应使用prop作为布尔属性:$(...).prop('checked', true);

答案 1 :(得分:0)

使用Jquery的removeAttr(“~~”)方法。