क्या कोई मुझे बता सकता है कि क्या आईडी या क्लास के बजाय इसकी सामग्री के आधार पर कोई तत्व ढूंढना संभव है ?
मैं ऐसे तत्वों को खोजने का प्रयास कर रहा हूं जिनमें अलग-अलग कक्षाएं या आईडी नहीं हैं। (तब मुझे उस तत्व के माता-पिता को खोजने की जरूरत है।)
क्या कोई मुझे बता सकता है कि क्या आईडी या क्लास के बजाय इसकी सामग्री के आधार पर कोई तत्व ढूंढना संभव है ?
मैं ऐसे तत्वों को खोजने का प्रयास कर रहा हूं जिनमें अलग-अलग कक्षाएं या आईडी नहीं हैं। (तब मुझे उस तत्व के माता-पिता को खोजने की जरूरत है।)
जवाबों:
आप :contains
उनकी सामग्री के आधार पर तत्वों को प्राप्त करने के लिए चयनकर्ता का उपयोग कर सकते हैं ।
$('div:contains("test")').css('background-color', 'red');
<div>This is a test</div>
<div>Another Div</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
.filter
इसके बजाय उपयोग करना होगा। $('div').filter(function(){ return $(this).text().toLowerCase() === 'test';})
$('div:contains( "test" )').css('background-color', 'red');
JQuery प्रलेखन में यह कहता है:
मिलान पाठ सीधे चयनित तत्व के भीतर दिखाई दे सकता है, उस तत्व के किसी भी वंश या संयोजन में
इसलिए यह पर्याप्त नहीं है कि आप :contains()
चयनकर्ता का उपयोग करें , आपको यह भी जांचना होगा कि क्या आप जिस पाठ की खोज करते हैं, वह उस तत्व की प्रत्यक्ष सामग्री है जिसे आप लक्षित कर रहे हैं, कुछ इस तरह से:
function findElementByText(text) {
var jSpot = $("b:contains(" + text + ")")
.filter(function() { return $(this).children().length === 0;})
.parent(); // because you asked the parent of that element
return jSpot;
}
<li>Hello <a href='#'>World</a>, How Are You.
:। यहाँ अगर How
खोज की जा रही है तो हालत मेरे ख्याल से असफल हो जाएगी।
फेलास, मुझे पता है कि यह पुराना है लेकिन हे मेरे पास यह समाधान है जो मुझे लगता है कि सभी से बेहतर काम करता है। सबसे पहले और सबसे महत्वपूर्ण केस संवेदनशीलता पर काबू पाया जाता है कि इसमें शामिल हैं: () के साथ भेज दिया गया है:
var text = "text";
var search = $( "ul li label" ).filter( function ()
{
return $( this ).text().toLowerCase().indexOf( text.toLowerCase() ) >= 0;
}).first(); // Returns the first element that matches the text. You can return the last one with .last()
आशा है कि निकट भविष्य में किसी को यह उपयोगी लगता है।
रॉकेट का जवाब काम नहीं करता है।
<div>hhhhhh
<div>This is a test</div>
<div>Another Div</div>
</div>
मैंने केवल उनके DEMO को यहाँ संशोधित किया है और आप देख सकते हैं कि मूल DOM चयनित है।
$('div:contains("test"):last').css('background-color', 'red');
इसे ठीक करने के लिए कोड में " : अंतिम " चयनकर्ता जोड़ें ।
मेरी राय में सबसे अच्छा तरीका है।
$.fn.findByContentText = function (text) {
return $(this).contents().filter(function () {
return $(this).text().trim() == text.trim();
});
};
हाँ, jQuery contains
चयनकर्ता का उपयोग करें ।
निम्न jQuery के div नोड्स का चयन करता है जिसमें पाठ होता है लेकिन कोई संतान नहीं होती है, जो DOM ट्री के पत्ते के नोड होते हैं।
$('div:contains("test"):not(:has(*))').css('background-color', 'red');
<div>div1
<div>This is a test, nested in div1</div>
<div>Nested in div1<div>
</div>
<div>div2 test
<div>This is another test, nested in div2</div>
<div>Nested in div2</div>
</div>
<div>
div3
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>