2010-12-02 4 views
4

essayer de sélectionner l'option suivante liste déroulante à l'aide d'un identifiant identifiant, mais en vainl'option suivante jquery

ici est le code

$('#chapter option:selected', 'select').removeAttr('selected').next('option').attr('selected', 'selected') 
+0

A quoi ressemble votre balisage? Soit #chapter, soit 'select' est redondant ici, ce qui signifie que vous voulez changer ceci sur * tous * les sélections, ou sur une seule sélection spécifique. –

+0

http://jsfiddle.net/ est votre ami! – Jakub

+0

Je juste <3 http://jsbin.com –

Répondre

6

Je suppose que #chapter est le <select> ou l'un de ses ancêtres .

Si c'est le cas, supprimez l'argument de contexte.

$('#chapter option:selected').removeAttr('selected') 
       .next('option').attr('selected', 'selected'); 

La façon dont vous l'aviez, vous faisiez effectivement ceci:

$('select').find('#chapter option:selected').removeAttr(... 

... qui est à la recherche d'un élément à l'intérieur l'<select> qui a un option:selected descendant d'un elelent avec le chapter ID.


EDIT: Cette réponse se concentrait uniquement sur la raison pour laquelle la sélection ne fonctionnait pas. Il serait préférable d'accomplir la tâche ultime en utilisant la méthode dans @Andy E's answer.

Je recommanderais celui-ci comme réponse acceptée.

+0

Je sais que c'est le code original de l'OP mais enlever l'attribut 'selected' est inutile si vous le réglez sur un élément d'option différent. –

+1

@Andy E - Je reviens juste à ça. Bon point. J'étais plus concentré sur pourquoi la sélection ne fonctionnait pas. – user113716

5

Il est inutile de supprimer l'attribut selected d'un élément <option> lorsque vous ajoutez à l'un de ses frères et sœurs, à moins que l'élément <select> a multiples attribut.

En supposant patrick dw's answer est correct (et il est parce que vous avez accepté), vous pouvez factoriser ce code en quelque chose de beaucoup plus efficace en prenant DOM à ses racines:

$("#chapter")[0].selectedIndex++; 

Sans parler de la précieux octets que vous économisez avec un code plus court.

+1

Octets précieux. Ils sont importants '$ (" # chapitre ") [0] .selectedIndex ++' – Raynos

+0

@Raynos: toucher :-) –

+0

+1 Ce serait le chemin à parcourir pour ce que l'OP essaye finalement de réaliser. – user113716

Questions connexes