Reputation: 1418
I am finding all the divs in a document which contains inside a text: 'thetext' and i am changing this text:
$("div:contains('thetext'):not(:has(*))").each(function () {
$(this).text($(this).text() + " anotherTextAddedBefore");
})
Is it possible to put inside contains multiple values? I would like to find the divs whic contains: 'thetext', but also another values, for example: 'thetext1', 'thetext2',etc
I`d want to make it in one procedure and not in more: dont want to use as many procedures as texts i´d like to find.
Thanks!
Upvotes: 8
Views: 19845
Reputation: 4498
Just adding one more point to above answers, if you want to select elements that dont have particular values then you can use
$("div:not(:contains('thetext'), :contains('thetext1'),:contains('thetext2'))")
works as and
condition
Upvotes: 2
Reputation: 34406
A selector like this provides an OR condition -
$("div:contains('thetext'), div:contains('thetext1'), div:contains('thetext2')")
A selector like this provides an AND condition -
$("div:contains('thetext'):contains('thetext1'):contains('thetext2')")
Demo - http://jsfiddle.net/jayblanchard/3a72h/
Upvotes: 15
Reputation: 6877
You can have an array
var array = ['John', 'Martin'];
$(array).each(function () {
$("div:contains(" + this + ")").css("text-decoration", "underline");
});
Upvotes: 4
Reputation: 29836
You can create an array and loop it:
var containsVals = ["text1","text2"];
for(var i=0;i<containsVals.length;i++){
$("div:contains("+ containsVals[i] +"):not(:has(*))").each(function () {
$(this).text($(this).text() + " anotherTextAddedBefore");
});
}
Upvotes: 1
Reputation: 388316
You can use the multiple selector as a or condition like
$("div:not(:has(*))").filter(":contains('thetext'), :contains('thetext2')").each(..)
Upvotes: 14