2010-11-10 72 views
0

我有一個依賴電臺組,通過點擊input#radio10,輸入#radio16 .form-b​​lock-cms應該滑落。並沒有問題。jQuery not()選擇器問題

問題是當我選擇輸入#radio16。 form-b​​lock-cms向下滑動並立即退回。如果input#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(); 
}; 

回答

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(); 
} 
+0

如果沒有與頁面上的ID「radio16」,然後'$(「#radio16」)[0沒有元素] .checked'會拋出一個錯誤,ergo,破壞程序。防範這一點可能是個好主意。我用'$(「#foo」)[0] || {}'在我的答案中。你怎麼看? – 2010-11-10 13:39:16

+0

@ime - 這是另一個問題的後續...它會在那裏:) – 2010-11-10 13:43:49

+0

我想我只是偏執狂:) – 2010-11-10 13:52:51

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

這不僅有較好的表現,但它也更容易閱讀:)