2009-10-20 5 views
0

J'essaie de voir si une option spéciale dans un menu de sélection a une valeur égale à 1, puis cache un autre objet. J'ai essayé toute la journée mais je n'arrive pas à le comprendre (probablement parce que je suis un débutant total à jquery)jQuery Selected

J'ai un menu de sélection que j'ai peuplé à partir d'un db. Si l'option avec l'ID = "1" a "selected = selected" alors je veux qu'un autre div soit masqué lorsque la page est chargée.

C'est ce que je suis arrivé à ce jour:

<select> 
<option id="3">test1</option> 
<option id="1" selected="selected">test2</option> 
<option id="2">test3</option> 
</select> 
<div id="hide">Hide me</div> 


$("#1 option:selected").ready(function() { 
    $("#hide").hide(); 
}); 

Toute aide serait grandement apprécié. Merci .. /Andreas

Répondre

10

Il y a quelques choses de mal avec votre code, je crains:

  1. Vous utilisez l'événement sur le mauvais objet - .ready() doit être appliqué au document
  2. ID peut ne commencez pas par un nombre
  3. Vous devez utiliser l'attribut value au lieu de l'attribut id.
  4. Il est préférable d'utiliser .val() pour obtenir la valeur
  5. Vous devez indiquer l'identifiant de sélection au cas où vous en ajouteriez un autre à la page.

Mettre tous ensemble:

<select id="foo"> 
<option value="3">test1</option> 
<option value="1" selected="selected">test2</option> 
<option value="2">test3</option> 
</select> 
<div id="hide">Hide me</div> 


$(document).ready(function() { 
    if ($('#foo').val() != 1) 
     $("#hide").hide(); 
}); 

Si vous voulez faire dynamiquement lorsque la sélection est changé, vous pouvez le faire comme ceci:

$('#foo').change(function() { 
    if ($(this).val() != 1) 
     $("#hide").hide(); 
    else 
     $("#hide").show(); 
}); 
+0

Merci beaucoup pour la réponse rapide. Je suis bien au courant des points que vous avez soulevés au sujet de mon exemple. J'ai juste noté rapidement un exemple de ce que j'ai essayé de faire pour un simple aperçu. Point pris, la prochaine fois je serai plus exact. J'ai essayé votre premier exemple et cela fonctionne (presque) parfaitement. Je voudrais que la div se cache lorsque la valeur sélectionnée est NOT = 1 à la place. – Keat

+0

OK J'ai changé le "==" en "! =" – Greg

+0

Hey, ça marche comme un rêve !! Merci un million .. – Keat

0

Tout d'abord, votre identifiant n'est pas valide. Cela ne devrait pas commencer par un nombre. Fournissez un identifiant à l'élément select et recherchez l'élément sélectionné et vérifiez sa valeur à 1 et affichez/massez la div appropriée.

0
// assume your select has id="mySelect" 
$(function() { 
    $('#mySelect').change(function() { 
     var value = $(this).val(); 
     if (value == '1') { 
      $('#hide').hide(); 
     } else { 
      $('#hide').show(); 
     } 
     return false; 
    }); 
}); 
0
$(function() { 

$('select').change(function(){ 
    if ($("option:selected",this).attr('id') == 1){ 
    $("#hide").hide(); 
    } 
}); 

}); 

Est-ce que travailler avec ce que vous avez, mais idem les points soulevés par d'autres -

  • Etats spécifications HTML que vous ne devriez pas avoir ids en commençant par les numéros
  • Utilisez l'attribut de valeur pour les options au lieu d'un identifiant
  • Vous devez mettre le code dans une fonction qui exécutera lorsque l'événement de changement de <select> est levé
  • Donnez le <select> un ID pour l'identifier de manière unique.