JQuery относительно переключения () - PullRequest
0 голосов
/ 14 ноября 2011

Мне нужно ТОЛЬКО переключать элемент, если он не отключен.

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 Ответ

1 голос
/ 14 ноября 2011

Что вы, вероятно, хотите сделать (спасибо Фредерик):

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'));
});

Проблема с вашим кодом заключается в том, что вы ожидаете, что оценка для отключенных будет оцениваться при каждом нажатии кнопки, и использовать первую функцию, если она истинна. Хотя он вызывается только при каждом втором щелчке, а другой функции не важно, отключена она или нет. Он проверяет флажок, несмотря ни на что. Вы должны либо привязать событие click, как я, либо привязать и отменить привязку к событию toggle в зависимости от того, отключена кнопка или нет.

В будущем вам будет легче помочь, если вы представите свой код в качестве скрипки (http://www.jsfiddle.net)) и более подробно опишите, что вы пытаетесь сделать, а что нет.

...