有关toggle()的jquery

时间:2011-11-14 07:20:16

标签: jquery-selectors toggle

如果没有禁用,我只需要切换一个元素。

jQuery("#sbutton").toggle(
    function () {
        if (!jQuery(\'input[name^="choose"]\').attr ( "disabled" )) {
            jQuery(\'input[name^="choose"]\').attr ( "checked" , true);
        }
    },
    function () { 
        jQuery(\'input[name^="choose"]\').removeAttr("Checked"); 
    }
)

IF条件可能吗?

1 个答案:

答案 0 :(得分:1)

你可能想做什么(感谢Frédéric):

jQuery("#sbutton").click(function() {
    if (jQuery('input[name^="choose"]').is(':disabled'))
        return false;
    if (jQuery('input[name^="choose"]').is(':checked'))
        jQuery('input[name^="choose"]').removeAttr("checked");
    else
        jQuery('input[name^="choose"]').attr("checked", true);
});

或只是

jQuery("#sbutton").click(function() {
    var checkbox = jQuery('input[name^="choose"]');
    if (checkbox.is(':disabled'))
        return false;
    checkbox.attr('checked', !checkbox.is(':checked'));
});

您的代码存在的问题是,您希望在每次单击按钮时评估禁用的评估,如果为true,则使用第一个函数。它只会在每次其他点击时调用,而另一个功能并不关心它是否被禁用。它会检查复选框,无论如何。您必须像我已经完成的那样绑定click事件,或者根据是否禁用该按钮来绑定和取消绑定toggle事件。

将来,如果您将代码作为小提琴(http://www.jsfiddle.net)展示并更全面地描述您正在尝试做什么以及哪些不能正常工作,那将更容易为您提供帮助