93 votes

jQuery sélectionne des éléments d'option par valeur

J'ai un élément de sélection entouré d'un élément span. Je ne suis pas autorisé à utiliser l'identifiant de la sélection mais je suis autorisé à utiliser l'identifiant du span. J'essaie d'écrire une fonction javascript/jquery dans laquelle l'entrée est un nombre i, qui est l'une des valeurs des options de la sélection. La fonction transformera l'option pertinente en sélectionnée.

<span id="span_id">
    <select id="h273yrjdfhgsfyiruwyiywer" multiple="multiple">
        <option value="1">cleaning</option>
        <option value="2">food-2</option>
        <option value="3">toilet</option>
        <option value="4">baby</option>
        <option value="6">knick-knacks</option>
        <option value="9">junk-2</option>
        <option value="10">cosmetics</option>
    </select>
</span>

J'ai écrit quelque chose comme suit (cela ne fonctionne pas complètement, c'est pourquoi je poste cette question) :

function select_option(i) {

    options = $('#span_id').children('select').children('option');
    //alert(options.length); //7
    //alert(options[0]); //[object HTMLOptionElement]
    //alert(options[0].val()); //not a jquery element
    //alert(options[0].value); //1

    //the following does not seem to work since the elements of options are DOM ones not jquery's
    option = options.find("[value='" + i + "']");
    //alert(option.attr("value")); //undefined
    option.attr('selected', 'selected');

}

Gracias.

156voto

jonathan.cone Points 3776

Voici la solution la plus simple avec un sélecteur clair :

function select_option(i) {
  return $('span#span_id select option[value="' + i + '"]').html();
}

1 votes

$.escapeSelector(i) peut être meilleur que i .

37voto

damoiser Points 1392

Avec jQuery > 1.6.1, il est préférable d'utiliser cette syntaxe :

$('#span_id select option[value="' + some_value + '"]').prop('selected', true);

30voto

Adrian Rodriguez Points 2208

Il suffit d'entourer votre option de $(option) pour qu'elle se comporte comme vous le souhaitez. Vous pouvez également raccourcir le code en faisant

$('#span_id > select > option[value="input your i here"]').attr("selected", "selected")

7voto

3nigma Points 21164
options = $("#span_id>select>option[value='"+i+"']");
option = options.text();
alert(option); 

voici le violon http://jsfiddle.net/hRFYF/

3voto

Arijit Ghosh Points 51

Pour obtenir la valeur, il suffit d'utiliser ceci :

<select id ="ari_select" onchange = "getvalue()">
<option value = "1"></option>
<option value = "2"></option>
<option value = "3"></option>
<option value = "4"></option>
</select>

<script>
function getvalue()
{
    alert($("#ari_select option:selected").val()); 
}
</script>

ceci récupérera les valeurs

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X