2011-03-31 4 views
7

L'utilisation de la fonction JQuery: contains permet de décider quelle option d'une sélection est sélectionnée à partir d'une variable SESSION.JQuery: contient la limite de fonction à la correspondance exacte

La fonction contient est correspondant à la mauvaise option leur est une option « PADI Open Water » et un autre « PADI Open Water Scuba »

Comment limitons-nous à correspondre au contenu exact et pas plus?

$('option:contains("<?php echo $_SESSION['divelevel'];?>")').attr('selected', 'selected'); 
+0

Ne vous dire '$ ('Option: contient (" ") ')'? –

+0

Oui, je l'ai dit. Et c'est aussi écrit comme ça sur la page actuelle. Mon erreur –

Répondre

13

Essayez d'utiliser .filter() pour trouver l'option de votre choix.

$('option').filter(function(){ 
    return $(this).html() == "<?php echo $_SESSION['divelevel'];?>"; 
}).attr('selected', 'selected'); 
+0

merci! ceci m'a eu sur la bonne voie pour faire ce dont j'avais besoin: $ ("option # # CountyID"). filter (function() { return $ (this) .html() == countySelect}). attr ('selected' , 'sélectionné'); –

+0

@JamieM: De rien :-) –

0

réponse de Rocket Hazmat a pu me aider sur mon projet actuel, où une valeur de cookie est et la ligne de table que la valeur du cookie se rapporte aux besoins d'être soulignés. Le code que j'avais à l'origine était:

$(".datalist TBODY TR:has('TD.itemId:contains(" + activeRowCookie + ")')").attr('id', 'activeRow'); 

Ce qui a bien fonctionné jusqu'à ce que nous avons réalisé qu'une cellule de table pourrait contenir la valeur activeRowCookie ainsi que autres personnages, mais nous avions besoin d'une correspondance exacte à tout le contenu de la cellule. En outre, nous recherchons la cellule qui contient cette valeur exacte et pas plus mais nous mettons en évidence la ligne dans laquelle la cellule est, pas seulement la cellule elle-même. Donc, je l'ai eu à travailler en adaptant la réponse ici à ce qui suit:

$('.datalist TBODY TR TD.itemId').filter(function() { 
    return $(this).text() == activeRowCookie; 
}).parent().attr('id', 'activeRow'); 

Et, oui, ce sélecteur initial n'a pas besoin d'être comme ça parce que nous ne voulons pas regarder les cellules dans l'élément THEAD.

0

Essayez d'ajouter une fonction d'extension pseudo:

$.expr[':'].textEquals = $.expr.createPseudo(function(arg) { 
    return function(elem) { 
     return $(elem).text().match("^" + arg + "$"); 
    }; 
}); 

Ensuite, vous pouvez faire:

$('p:textEquals("<?php echo $_SESSION['divelevel'];?>")').attr('selected', 'selected'); 
Questions connexes