0

我有一个 jQuery 脚本,它可以在 html 中找到所有input type=radio内容并在它们上附加一些精美的 css。问题是我希望某些单选按钮保持不变。这是jQuery:

$(this).each(function (i) {
    if ($(this).is('[type=checkbox],[type=radio]')) {
        var input = $(this);
        var label = $('label[for=' + input.attr('id') + ']');
        var inputType = (input.is('[type=checkbox]')) ? 'checkbox' : 'radio';
        $('<div class="custom-' + inputType + '"></div>').insertBefore(input).append(input, label);
        var allInputs = $('input[name=' + input.attr('name') + ']');
        label.hover(

        function () {
            $(this).addClass('hover');
            if (inputType == 'checkbox' && input.is(':checked')) {
                $(this).addClass('checkedHover');
            }
        },

        function () {
            $(this).removeClass('hover checkedHover');
        });
        input.bind('updateState', function () {
            if (input.is(':checked')) {
                if (input.is(':radio')) {
                    allInputs.each(function () {
                        $('label[for=' + $(this).attr('id') + ']').removeClass('checked');
                    });
                };
                label.addClass('checked');
            } else {
                label.removeClass('checked checkedHover checkedFocus');
            }
        })
            .trigger('updateState')
            .click(function () {
            $(this).trigger('updateState');
        })
            .focus(function () {
            label.addClass('focus');
            if (inputType == 'checkbox' && input.is(':checked')) {
                $(this).addClass('checkedFocus');
            }
        })
            .blur(function () {
            label.removeClass('focus checkedFocus');
        });
    }
});

这工作正常,但它会改变页面上的所有单选按钮。我想添加一些需要更改的单选按钮。我希望这个 html 代码中的单选按钮不受上面脚本的影响:

<p class="field switch">
    <input type="radio" id="radioZ1" name="field1" checked />
    <input type="radio" id="radioZ2" name="field2" />
    <label for="radioZ1" class="cb-enable selected"><span>Enable</span>
    </label>
    <label for="radioZ2" class="cb-disable"><span>Disable</span>
    </label>
</p>

所以我试图在.not()之后添加,.is()但我没有运气。有人可以帮我吗?

4

1 回答 1

0

这是我的工作解决方案:

if($(this).is('[type=checkbox],[type=radio]') && !($(this).is("p.switch > [type=radio]")) ) 
于 2013-01-18T09:38:25.873 回答