I have:
<div class="bar">baz</div>
<div class="foo">qux</div>
<div class="foo">qux</div>
<div class="foo">baz</div>
<div class="foo">qux</div>
<div class="foo">baz</div>
<div class="foo">qux</div>
And I would like all the elements that contain the same content as the one with a class of "bar" to also have a class of "bar" like so:
<div class="bar">baz</div>
<div class="foo">qux</div>
<div class="foo">qux</div>
<div class="bar">baz</div>
<div class="foo">qux</div>
<div class="bar">baz</div>
<div class="foo">qux</div>
But I can't just search for "baz" because that content is subject to change. Instead I have to figure out what's in the lone "bar" div then find the others that match it and change their class to "bar" too.
I've managed to get the content of the first "bar" element into a variable:
var = body.css(".bar").first.inner_text
But nothing I've tried from there as far as finding the matching content and replacing the class has worked.
Be careful using body.css("div:contains('#{text_to_match}')")
.
input = '<div class="bar">baz</div>
<div class="foo">qux</div>
<div class="foo">qux</div>
<div class="foo">baza</div>
<div class="foo">qux</div>
<div class="foo">bazfdsfsdf</div>
<div class="foo">qux</div>'
The output will be:
<div class="bar">baz</div>
<div class="foo">qux</div>
<div class="foo">qux</div>
<div class="bar">baza</div>
<div class="foo">qux</div>
<div class="bar">bazfdsfsdf</div>
<div class="foo">qux</div>
If you want to match the exact same text in both elements, you should use: body.css("div[text() = '#{text_to_match}']")
input = '<div class="bar">baz</div>
<div class="foo">qux</div>
<div class="foo">qux</div>
<div class="foo">baza</div>
<div class="foo">qux</div>
<div class="foo">bazfdsfsdf</div>
<div class="foo">baz</div>'
The output would be:
<div class="bar">baz</div>
<div class="foo">qux</div>
<div class="foo">qux</div>
<div class="foo">baza</div>
<div class="foo">qux</div>
<div class="foo">bazfdsfsdf</div>
<div class="bar">baz</div>
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments