2010-07-16 4 views
3

Je cherche un moyen de changer la valeur de l'option à partir d'une étiquette de sélection lorsque les utilisateurs cliquent sur un lien.Comment changer la valeur de l'option avec Jquery?

Par exemple, j'avoir une option de sélection html:

<select> <option value="0">Please Select</option> 
<option value="1">red</option> 
<option value="2">white</option> 
</select> 

Et j'ai 2 liens <a href="#" title="red" class="preview_link">red</a> <a href="#" title="white">white</a> Lorsque l'utilisateur clique sur l'option rouge passera au rouge et blanc passe au blanc. J'utilise le code suivant, mais cela ne fonctionne pas.

jQuery("a.preview_link").click(function() { 
    var title = jQuery(this).attr("title"); 
     jQuery(this).parent('p').children("select :selected").text(title); 
}); 

Une suggestion?

+0

Pourquoi ne pas utiliser $ au lieu de taper jQuery? – JonH

+0

$ provoque des conflits ... –

Répondre

5

Votre chemin définira le texte de l'option sur l'attribut title. Essayez:

jQuery("a.preview_link").click(function() { 
    var title = jQuery(this).attr("title"); 
    jQuery(this).parent('p').find("select option").filter(function() { 
     return $(this).text() == title; 
    }).attr('selected', 'selected'); 
}); 

Voir filter.

+0

Je l'ai essayé mais rien ne change. –

+0

Sélectionnez-vous 'select' correctement? Essayez 'alert (jQuery (this) .parent ('p'). Find (" sélectionnez l'option "). Length);' dans votre gestionnaire d'événements. – karim79

+0

J'ai couru qu'il revient avec 9 ... –

0

Hmm, vous allez sur ce mal: Au lieu de modifier le texte de l'option sélectionnée, vous devez faire une boucle sur les éléments <option/> et sélectionner celui qui convient, quelque chose comme ceci:

$("select option").each(function() { 
    if($(this).text() == "red")) { 
     this.selected = true; 
    } 
}); 

Edit: Il peut y avoir une fonction select() dans jQuery. Si c'est le cas, utilisez-le sur la propriété DOM.

+0

vous pourriez être sur quelque chose ... mais je l'ai essayé et rien ne change ... –

1

Ceci?

$("select #some-option").attr("selected", "selected"); 

Ou cela?

$("select").val(index); 
Questions connexes