2010-10-19 6 views
2

Je suis nouveau sur jQuery, mais je tente de créer une fonction que je peux utiliser pour filtrer une table. J'ai mis la table en place pour que je puisse sélectionner toutes les lignes de la classe (ce qui fonctionne bien) et appeler chaque() sur le résultat. A l'intérieur du rappel à chaque() J'ai cette instruction if:Comment est: contains() supposé être utilisé?

if ($(this).find("td[name=firstName]:contains('ke')").size() > 0) 

Cependant, il ne trouve pas de correspondance quand je sais qu'il est là. Si je retire l'appel contains(), il trouve la cellule du tableau, mais je ne sais pas vraiment ce qui ne va pas. Malheureusement (pour moi) cela pourrait être aussi simple que d'utiliser la mauvaise syntaxe ... :(

Le résultat final serait d'avoir une variable pour la chaîne de sélection, mais puisque même l'utilisation directe de la chaîne ne fonctionne pas. ..

+0

Quelle est votre intention? Il est difficile de dire si vous le faites correctement, si nous ne savons pas ce que vous voulez faire. :) Vous pouvez omettre les guillemets simples, btw, de sorte que votre sélecteur devient '" td [nom = prénom]: contient (ke) "'. Il a sélectionné tous les éléments td qui ont un nom-attribut avec la valeur "firstName", et le contenu du noeud de texte de l'élément td doit contenir la chaîne "ke". P.S .: Vous utilisez également '.find()', qui recherche dans les éléments de la descendance de '$ (this)', ** sans inclure $ (this) **. – Thomas

Répondre

1

Vous pouvez étendre les sélecteurs de jQuery avec ceci:

$.expr[':'].icontains = function(obj, index, meta, stack){ 
return (obj.textContent || obj.innerText || jQuery(obj).text() || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0; 
}; 

Cela vous donnerait un nouveau pseudo-sélecteur :icontains(text) qui fonctionne comme :contains(text), mais insensible à la casse.

Voir: Comment Section sur la page de documentation de jQuery pour :contains(text)

1

remplacer .size() avec .length

vérifier également qu'il est de trouver minuscule 'ke'

+0

Ou même avec '.length' – lonesomeday

+0

Je dois courir donc je ne peux pas vérifier, mais c'est très probablement le problème. Comment je g et un cas insensible contient? – CodeRedick

0

Cela fonctionne pour moi (http://jsfiddle.net/dactivo/PHMkx/).

il cherche un td avec un attr ibute "name" avec la valeur "FirstName" et à l'intérieur du td, c'est-à-dire, le html à l'intérieur de td, contient la chaîne "prueba". taille() ou longueur ici les deux fonctionnent.

<table><tr><td name="FirstName"><a class="edit">prueba</a> </td></tr></table> 

$(document).ready(function(){ 

    if ($("table:eq(0)").find("td[name=FirstName]:contains('prueba')").size() > 0) 
    { 
     alert("yes"); 
    } 

}); 
Questions connexes