2010-11-10 6 views
0

J'ai un groupe de radio dépendante, où en cliquant sur l'entrée # radio10, l'entrée # radio16 .form-block-cms devrait glisser vers le bas. Et pas de problèmes avec ça.Problème de sélecteur jQuery not()

Problème lorsque je sélectionne l'entrée # radio16. Form-bloc-cms glisse vers le bas et recule tout de suite. J'ai essayé d'utiliser des instructions cond else si l'entrée # radio16 n'est pas sélectionnée, mais c'est toujours le cas.

Comment puis-je contourner s'il vous plaît?

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

Répondre

5

éléments filtres .not() (mais retourne toujours un objet jQuery, donc il sera ~ = true), ce que vous avez besoin au lieu est ! et .is(), comme ceci:

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

Ou un peu plus simple:

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

S'il n'y a aucun élément avec l'ID « radio16 » sur la page, puis '$ (« # radio16 ») [0 ] .checked' jettera une erreur, ergo, casser le programme. Ce pourrait être une bonne idée de se prémunir contre cela. J'ai utilisé '$ (" # foo ") [0] || {} 'dans ma réponse. Qu'est-ce que tu penses? –

+0

@ime - Ceci est une suite à une autre question ... ça va être là :) –

+0

Je suppose que je suis juste paranoïaque :) –

1

vous pouvez également utiliser des variables, de sorte que vous ne recherchez pas le même élément deux fois ...

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

Non seulement cela a de meilleures performances, mais il est aussi plus lisible :)