2010-10-14 6 views
1

Comment utiliser $ (this) au lieu du sélecteur complet dans le code ci-dessous dans l'instruction "if". J'ai essayé une combinaison différente de "cet" usage et aucun n'a fonctionné. Parmi eux sont ...

if ($("this :selected").text().indexOf("[Subtract") >= 0){ 
if ($(this" :selected").text().indexOf("[Subtract") >= 0){ 

Je suis sûr que ce doit être quelque chose de vraiment simple, je ne peux pas le comprendre aujourd'hui.

<script type="text/javascript" language="javascript"> 
$(document).ready(function(){ 
$("select[name^=SELECT___]").change(function() { 
if ($("select[name^=SELECT___] :selected").text().indexOf("[Subtract") >= 0){ 
alert(''); 
} 
}); 
}); 
</script> 

Répondre

3

Utilisez le find method sur $(this) pour trouver des éléments spécifiques qui sont des descendants de this:

$(this).find(":selected").text().indexOf("[Subtract") 
+0

.Find() recherche toute la hiérarchie – Tudorizer

+0

je vais vous le donner à cause que vous étiez premier. Merci. Travaillé!!!! – user357034

+0

@Tudorizer: Tout comme le sélecteur 'select [nom^= SELECT ___]: selected'. – Gumbo

2

$ (this) .filter (': sélectionné')

http://api.jquery.com/filter/

+0

Ceci est incorrect. '.filter()' testera uniquement par rapport à l'ensemble en cours. Pas de descendants. – user113716

+0

Je sais. Si ce que vous avez dit est le besoin, alors .find() est la bonne réponse. – Tudorizer

+0

Si vous savez que c'est faux, pourquoi l'avez-vous affiché comme réponse? – user113716

2

Essayez ceci:

$(":selected", this) 

Ceci limite le sélecteur ": selected" au contexte de l'objet "this". Plus d'info here.

3

Vous pouvez spécifier this que le contexte du sélecteur:

$(":selected",this) 

Mais, finalement, devient juste tourné autour into @Gumbo's answer. Ce serait donc un peu plus efficace.


En fin de compte, je ne voudrais pas utiliser non plus. Si vous avez réellement besoin sélectionné <option>, ce serait une autre approche:

this.options[ this.selectedIndex ].text.indexOf(...; 

Depuis this est l'élément <select>, vous utilisez la propriété options qui stocke un tableau des options, et sa propriété selectedIndex pour obtenir sélectionné un du options.

Ensuite, vous utilisez la propriété text de l'élément <option> pour obtenir le texte.

Plus efficace de cette façon.

+0

Hey Patrick, merci pour les modifications et les explications. – user357034

+0

@user - De rien. : o) – user113716

0

Le jQuery « est » sélecteur semble faire ce que vous voulez bien que je ne l'ai pas vérifié: http://api.jquery.com/is/

if($(this).is(":selected").text().indexOf("[Subtract") >= 0){ ... } 
+1

Ceci est incorrect. '.is()' renvoie un booléen. – user113716

+0

-1 'is' renvoie un booléen. – Gumbo

Questions connexes