jQuery not()选择器问题

时间:2010-11-10 13:23:42

标签: jquery

我有一个依赖的无线电组,通过点击输入#adio10,输入#radio16 .form-b​​lock-cms应该向下滑动。并没有问题。

问题是当我选择输入#radio16时。 form-b​​lock-cms向下滑动并立即恢复。如果未选择输入#radio16,我尝试使用cond语句,但它仍在执行此操作。

我怎么能绕过它?

if ($('input#radio10, input#radio16').is(':checked')) {
    $('.rsform-block-cms').slideDown().addClass('additionalField')
}
else if ($('input#radio16').not(':checked')) {
    $('.rsform-block-cms').slideUp();
};

2 个答案:

答案 0 :(得分:5)

.not()过滤元素(但仍会返回一个jQuery对象,因此它将是〜= true),而您需要的是!.is(),如下所示:

!$('input#radio16').is(':checked')

或者更简单一点:

if ($('#radio10, #radio16').is(':checked')) {
   $('.rsform-block-cms').slideDown().addClass('additionalField')
} else if (!$('#radio16')[0].checked) {
   $('.rsform-block-cms').slideUp();
}

答案 1 :(得分:1)

您可能还想使用变量,这样就不会两次搜索相同的元素......

var radio10 = $("#radio10")[0] || {};
var radio16 = $("#radio16")[0] || {};
var $rsfrom = $("#.rsform-block-cms");

if ( radio10.checked && radio16.checked ) {
    $rsform.slideDown().addClass("additionalField");
} else if ( !radio16.checked ) {
    $rsform.slideUp();
}

这不仅具有更好的性能,而且更具可读性:)