2009-04-28 1 views
35

In den meisten Sprachen wie C# zum Beispiel gegeben eine Zeichenfolge können Sie testen (boolean), wenn diese Zeichenfolge enthält eine andere Zeichenfolge, im Grunde eine Teilmenge dieser Zeichenfolge.jQuery String enthält Manipulation?

string x = test2; 


if(x.contains("test")) 
    // do something 

Wie kann ich dies auf einfache Weise mit Javascript/Jquery tun?

+0

möglich Duplikat [Methode wie String.contains() in JavaScript] zu implementieren (http://stackoverflow.com/questions/1789945/method-like-string-contains-in-javascript) – Bergi

Antwort

64

Dies geschieht mit indexOf, aber es gibt -1 statt False zurück, wenn nicht gefunden.

Syntax
string.indexOf(searchValue[, fromIndex])

Parameter
searchValue - Ein String, der den Wert für die Suche darstellt.
fromIndex - Die Position innerhalb string, um die Suche zu starten. Es kann eine ganze Zahl zwischen 0 und der Länge string sein. Der Standardwert ist 0.

Zurück
Der erste Index in string, bei dem der Start der Teilkette gefunden werden kann, oder -1, wenn string enthält keine Instanzen des Teils.

+0

Dead link ....... – Kimtho6

+2

Scheint jetzt gut. – Igor

+0

Ich sehe 'indexOf' Groß-und Kleinschreibung. Um case-insesitive zu vergleichen, verwende ich 'if (t.toUpperCase(). IndexOf (s.toUpperCase())> = 0) {/ * gefunden * /}' – marioosh

22

Wie Paolo und Cletus sagten, können Sie es mit indexOf() tun.

Valid zu erwähnen ist, dass es eine JavaScript-Funktion ist, nicht eine jQuery.

Wenn Sie ein jQuery-Funktion, dies zu tun möchten, können Sie es verwenden:

jQuery.fn.contains = function(txt) { return jQuery(this).indexOf(txt) >= 0; } 
+6

Sie haben einen Fehler in dieser Implementierung: wenn die gesuchte Zeichenfolge beginnt mit txt, es wird false zurückgegeben. Verwenden Sie> = statt>. –

+1

Korrigiert für den Kommentar von Jacob – eKek0

+0

'jQuery (this)' gibt ein jQuery-Objekt zurück, keine Zeichenfolge. 'indexOf' existiert nicht innerhalb dieses jQuery-Objekts. 'this' wird auch keine Zeichenkette sein, also müssen Sie wissen, welchen Teil von' this' Sie nach 'txt' suchen möchten. Vielleicht 'return this.src.indexOf (txt)> = 0;'? – Rudie

4

Ein einfaches enthält beispielsweise auch nützlich sein kann:

<div class="test">Handyman</div> 


$(".test:contains('Handyman')").html("A Bussy man"); 
3

ein funktionierendes Beispiel, mit nur indexOf und jQuery

// Add span tag, if not set 
$(document).ready(function(c) { 
    $('div#content ul.tabs li a').each(function(c){ 
    // Add span wrapper if not there already 
    if($(this).html().indexOf('span') == -1){ 
     $(this).html('<span class="tab">' + $(this).html() + '</span>'); 
    } 
    }); 
}); 

DT

+4

Sind Sie Dave Thomas von Wendy? Wenn ja, habe ich dort zu Mittag gegessen. Großer Burger. – goat

0

Versuchen Sie, diese

function function1() { 
    var m = document.all.myDiv.contains(myB); 
    if (m == true){ 
     m = "YES" 
    } else { 
     m = "NO" 
    } 
    alert(m) 
}