$('#txt').keyup(function(){
var txtsearch = $('#txt').val();
var filt = $("div.link-item:contains('" + txtsearch +"')");
$("div.link-item").css("display", "none")
.filter(filt)
.css("display", "block");
});
Ich möchte Inhalte auf der Clientseite dynamisch filtern. Wenn ich ein großes j eingebe, gibt es nur das zweite div zurück, während ich alle div erhalten möchte, die j enthalten, egal ob Groß- oder Kleinbuchstaben.
Es ist kein Problem (wenn Sie meinten, dass es das erste div zurückgibt) und zu Ihrer Information schreiben Sie eine Eingabe wie diese: <input id="txt" value="" />
– Anfänger
5. Januar 12 um 17:32 Uhr
mögliches Duplikat von stackoverflow.com/questions/187537/… und stackoverflow.com/questions/2196641/…
– qiao
5. Januar 12 um 17:34 Uhr
Mögliches Duplikat von stackoverflow.com/q/2196641/1114171
– T.I
5. Januar 12 um 17:34 Uhr
Autobahn des Lebens
Sie können die ändern .contains filtern Sie, um die Groß-/Kleinschreibung zu ignorieren, oder erstellen Sie Ihren eigenen Selektor.
jQuery.expr[':'].icontains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
Dadurch wird ein neuer Selektor erstellt: icontains (oder Sie könnten ihn unsensibel-enthält nennen, oder was auch immer Ihnen gefällt). Die Verwendung wäre die gleiche wie enthält: $('div:icontains("Stack")'); würde passen:
Oder das Vorhandene überschreiben .contains Filter:
jQuery.expr[':'].contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
Wenn dies an Ort und Stelle ist,
$("div:contains('John')");
würde alle drei dieser Elemente auswählen:
<div>john</div>
<div>John</div>
<div>hey hey JOHN hey hey</div>
Ich denke, Sie sollten dafür einen separaten Selektor erstellen, anstatt den Standard zu überschreiben.
– Stefan
5. Januar 12 um 18:10 Uhr
Sie erhalten meine letzte positive Bewertung (obwohl ich empfehlen würde, sie “ContainsInsensitiv” zu nennen, damit Sie keine eingebauten Dinge überschreiben)
– Adam Rackis
5. Januar 12 um 18:21 Uhr
wird nicht eine Zeichenfolge mit allen sein :contains(foo) dass Sie das manuell entfernen müssten? Erklären die jQuery-Dokumente diese Funktion irgendwo?
– Adam Rackis
5. Januar 12 um 18:31 Uhr
Nur für den Fall, dass jemand Probleme mit dem hat, was ist a,i,m in function(a,i,m) wie ich .. verweise darauf jquery-howto.blogspot.in/2009/06/…
– Abdul Hamed
4. April 17 um 9:48 Uhr
Danke für den Link, @AbdulHameed! Jetzt verstehe ich, warum die m[3].
– Chris Walker
6. August 19 um 20:23 Uhr
Adam Rackis
Warum nicht die verwenden filter Funktion und übergeben Sie eine Funktion, die einen Regex verwendet, bei dem die Groß-/Kleinschreibung nicht berücksichtigt wird?
var filteredDivs = $("div.link-item").filter(function() {
var reg = new RegExp(txtsearch, "i");
return reg.test($(this).text());
});
Der übereinstimmende Text kann direkt innerhalb des ausgewählten Elements, in einem beliebigen Nachfolger dieses Elements oder einer Kombination davon erscheinen. Wie bei Attributwertselektoren kann Text innerhalb der Klammern von :contains() als reine Wörter geschrieben oder in Anführungszeichen gesetzt werden. Der Text muss eine passende Groß-/Kleinschreibung haben, um ausgewählt zu werden.
Auch erstellt a Demo falls es jemand ausprobieren möchte.
AKTUALISIEREN
Sorry, habe deine Frage wohl falsch gelesen.
Diesen jQuery-Ausdruck gefunden unter http://bugs.jquery.com/ticket/278 um einen neuen Selektor zu erstellen, der ist Groß-/Kleinschreibung egal und ich habe meine aktualisiert Demo.
Ich glaube nicht, dass es eine Möglichkeit gibt, dies mit einem Raw-Selektor zu tun. Der contains selector unterscheidet zwischen Groß- und Kleinschreibung und es scheint keine Version ohne Berücksichtigung der Groß-/Kleinschreibung zu geben. Ich denke, der beste Ansatz ist die Verwendung eines Filters, der das Objekt manuell abfragt
var filt = function (unused) {
$(this).text().toLowerCase().indexOf(txtSearch.toLowerCase()) !== -1;
};
.
7582900cookie-checkjQuery :contains() Selektor Problem mit Groß- und Kleinschreibungyes
Es ist kein Problem (wenn Sie meinten, dass es das erste div zurückgibt) und zu Ihrer Information schreiben Sie eine Eingabe wie diese:
<input id="txt" value="" />
– Anfänger
5. Januar 12 um 17:32 Uhr
mögliches Duplikat von stackoverflow.com/questions/187537/… und stackoverflow.com/questions/2196641/…
– qiao
5. Januar 12 um 17:34 Uhr
Mögliches Duplikat von stackoverflow.com/q/2196641/1114171
– T.I
5. Januar 12 um 17:34 Uhr