2016-07-14 4 views
1

enthält ich auf meiner Seite diese beiden Elemente bekommen haben.jQuery - wenn Körper exakte Zeichenfolge dann machen Variable wahr

<p>Some text<p> 
<p>Some text that I need</p> 

Wenn Text mit genauer Text ist „Ein Text, die ich brauche“, dann mag ich meine Variable Test um wahr zu sein. Wenn nicht, dann muss falsch sein. Wenn die Seite also nur einen Text enthält, muss oder muss, muss die Variable falsch sein.

Arbeit Mein Code tut, warum?

var test = $("body").filter(function() { 
    return $(this).text() === "Some text that I need" ? true : false; 
}) 
+0

"this" bezieht sich auf den Body-Tag verwenden. – jordaniac89

+0

$ (this) in diesem Zusammenhang ist der Body-Tag ... – Liam

+0

Der Körper ist ** ** nie gehen 'einen Text enthalten, die ich need' becuase es'

enthält einige Text, den ich

brauchen '. Es ist nicht klar, wie das funktionieren soll. – Liam

Antwort

1

Try this:

var test = $("body *").filter(function() { 
    return $(this).text() === "Some text that I need" ? true : false; 
}).length > 0; 

JSFiddle

+0

@dfsq Das OP fragt, wenn der Körper ein Element mit spezifischem Text enthält, er will, dass "test" wahr ist, oder? –

+0

Richtig, aber es bedeutet immer noch nicht, dass diese Absätze direkte Kinder des Körpers sind. Wie auch immer, vielleicht wird es für OP nützlich sein. Prost! Btw, OP will boolesches Ergebnis, Länge ist eine Zahl, also wahrscheinlich 'length> 0'. – dfsq

+0

@dfsq Okay, ich verstehe, was du meinst, danke! –

2

Es zwei Probleme. Zuerst sollten Sie die Elemente mit $("p") auswählen.

Aber .filter wird immer eine jQuery Ergebnismenge zurückgeben und wenn es keine Übereinstimmung gibt, wird es eine leere Ergebnismenge sein, so dass Sie testen müssen, ob ein Element in der Ergebnismenge .length ist.

var test = $("p").filter(function() { 
    return $(this).text().trim() === "Some text that I need"; 
}).length > 0; 

EDIT hinzugefügt .trim, so dass es auch <p> Some text that I need </p> übereinstimmen

Basierend auf Ihren Kommentar This text should once in p element, once in span sometimes in li element.:

Sie müssen alle Elemente im Dokument auswählen:

var test = $("body *").filter(function() { 
    return $(this).text().trim() === "Some text that I need"; 
}).length > 0; 
+0

@dfsq das ist wahr. –

1

Ein einfaches Beispiel dafür wäre:

I .each() hier

$("body *").each() //will handle any child containing the text you are looking for 

$("body p").each() //will handle any p tag containing the text you are looking for 

$("body p, body li").each() //will handle any p or li tag containing the text you are looking for 

var test = false; 
 
var searchText = "Some text that I need"; 
 
$("body *").each(function() { //will handle any child containing the text you are looking for 
 
    if ($(this).text().trim() === searchText) { 
 
    test = true; 
 
    return; 
 
    } 
 
}); 
 
console.log(test);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<p>Some text</p> 
 
<p>Some text that I need</p> 
 
<span>Some text that I need</span>

Verwandte Themen