2010-01-11 2 views
1

Cela fait ma tête!Sélectionnez l'élément n'a pas de tableau 'options'

J'ai un élément de sélection avec plusieurs options, mais je ne peux pas manipuler ou accéder à l'une des options, car apparemment le tableau 'options' n'existe pas.

J'ai recréé le problème dans un document html plus simple:

<html><head><title>test test test</title> 
<script type="text/javascript" src="jquery-1.3.2.min.js"></script> 
<script type="text/javascript" > 
function checkMenu() { 
if($("#menu").options) { 
    $("#message").text("Success!"); 
} 
else { 
    $("#message").text("Fail :<"); 
} 
} 
</script> 
</head> 
<body> 
    <select id="menu" name="menu"> 
     <option>qwerty</option> 
     <option>uiop</option> 
     <option>asdf</option> 
     <option>ghjkl</option> 
    </select> 
    <a href="#" onclick="checkMenu()">Clicker!</a> 
    <div id="message">message</div> 
</body> 
</html> 

(projet original est ASP MVC) Je n'ai pas réussi à trouver toute information à ce sujet, des conseils appréciés.

+0

Vérifiez la réponse de Munch ci-dessous. Cela fonctionnera pour vous. Le problème que vous rencontrez est dû au fait que la propriété .options n'existe pas. Ce que vous devez retenir de jQuery, c'est qu'il enveloppe les éléments DOM. Toutes ses propriétés sont génériques, telles que val, text, html, etc. .options n'existe pas. Vous pouvez également parcourir les éléments avec $ ("menu"). Each (function() {// faire quelque chose à chacun ...}); –

+0

Consultez également cette page pour quelques détails de base de travail avec les sélections et jQuery: http://elegantcode.com/2009/07/01/jquery-playing-with-select-dropdownlistcombobox/ –

+0

Merci pour les réponses, cela a éclairci! – elwyn

Répondre

8
if($'#menu option').length > 0) { 
    $("#message").text("Success!"); 
} 
else { 
    $("#message").text("Fail :<"); 
} 
2

La fonction $ en jQuery renvoie l'objet jQuery, pas l'élément DOM sous-jacent. Si vous souhaitez utiliser l'élément DOM sous-jacent, utilisez $('#menu').get(0) ou $('#menu')[0]. Mieux encore, utilisez les méthodes jQuery pour accéder aux attributs ou à la valeur des éléments.

var selected = $('#menu').value(); 
var selectedText = $('#menu option:selected').text(); 
Questions connexes