मान लें कि एक वेब पेज में एक स्ट्रिंग है जैसे कि "मैं एक साधारण स्ट्रिंग हूं" जिसे मैं खोजना चाहता हूं। मैं इस बारे में JQuery का उपयोग कैसे करूँगा?
मान लें कि एक वेब पेज में एक स्ट्रिंग है जैसे कि "मैं एक साधारण स्ट्रिंग हूं" जिसे मैं खोजना चाहता हूं। मैं इस बारे में JQuery का उपयोग कैसे करूँगा?
जवाबों:
jQuery में विधि शामिल है। यहाँ आप के लिए एक टुकड़ा है:
<script type="text/javascript">
$(function() {
var foundin = $('*:contains("I am a simple string")');
});
</script>
ऊपर चयनकर्ता किसी भी तत्व का चयन करता है जिसमें लक्ष्य स्ट्रिंग शामिल है। फाउंडिन एक jQuery ऑब्जेक्ट होगा जिसमें कोई भी मिलान किया गया तत्व होता है। API जानकारी यहाँ देखें: https://api.jquery.com/contains-selector/
'*' वाइल्डकार्ड पर ध्यान देने वाली एक बात यह है कि आपको अपने HTML तत्वों सहित सभी तत्व मिल जाएंगे, जो आप नहीं चाहते। यही कारण है कि jQuery और अन्य स्थानों पर अधिकांश उदाहरण $ का उपयोग करते हैं ('div: होता है ("मैं एक साधारण स्ट्रिंग हूँ")'
आम तौर पर jQuery के चयनकर्ता डोम में "टेक्स्ट नोड्स" के भीतर नहीं खोजते हैं। हालाँकि यदि आप .contents () फ़ंक्शन का उपयोग करते हैं, तो टेक्स्ट नोड्स शामिल किए जाएंगे, फिर आप केवल टेक्स्ट नोड्स को छानने के लिए नोड टेक्स्ट प्रॉपर्टी और टेक्स्ट स्ट्रिंग को खोजने के लिए नोडवैल्यू प्रॉपर्टी का उपयोग कर सकते हैं।
$ ('*', 'बॉडी') .andSelf () .contents () .filter (function () { इसे वापस करें। }) .filter (function () { // केवल तब होता है जब पाठ में कहीं भी 'सरल स्ट्रिंग' होता है इसे वापस करें। }) .प्रत्येक (function () { // इसके साथ कुछ करें });
.andSelf()
। से api.jquery.com/andSelf : "jQuery वस्तुओं एक आंतरिक ढेर है कि तत्वों के मेल नहीं खाते सेट करने के लिए परिवर्तनों का ट्रैक रखता बनाए रखने के जब डोम ट्रेवर्सल तरीकों में से एक कहा जाता है, तत्वों का नया सेट ढेर पर धकेल दिया जाता है।। तत्वों के पिछले सेट के रूप में अच्छी तरह से वांछित है। और (मदद कर सकते हैं)। " मुझे कोई पिछला संदर्भ नहीं दिखाई दे रहा है, मैं क्या याद कर रहा हूं?
यह सिर्फ पत्ती तत्वों का चयन करेगा जिसमें "मैं एक साधारण स्ट्रिंग हूं"।
$('*:contains("I am a simple string")').each(function(){
if($(this).children().length < 1)
$(this).css("border","solid 2px red") });
इसका परीक्षण करने के लिए पता बार में निम्नलिखित चिपकाएँ।
javascript: $('*:contains("I am a simple string")').each(function(){ if($(this).children().length < 1) $(this).css("border","solid 2px red") }); return false;
यदि आप बस "मैं एक साधारण स्ट्रिंग हूँ" हड़पना चाहता हूँ । पहले पाठ को किसी तत्व में लपेटें जैसे।
$('*:contains("I am a simple string")').each(function(){
if($(this).children().length < 1)
$(this).html(
$(this).text().replace(
/"I am a simple string"/
,'<span containsStringImLookingFor="true">"I am a simple string"</span>'
)
)
});
और फिर यह करो।
$('*[containsStringImLookingFor]').css("border","solid 2px red");
यदि आप अपने द्वारा खोजे जा रहे पाठ के निकटतम नोड चाहते हैं, तो आप इसका उपयोग कर सकते हैं:
$('*:contains("my text"):last');
यदि आपका HTML ऐसा दिखता है तो भी यह काम करेगा:
<p> blah blah <strong>my <em>text</em></strong></p>
उपरोक्त चयनकर्ता का उपयोग करने से <strong>
टैग मिल जाएगा , क्योंकि यह अंतिम टैग है जिसमें वह संपूर्ण स्ट्रिंग है।
<p>my text <b>my text</b></p>
- <b>
टैग के पूर्वजों को हटाना अन्य मैच हार गए
हाइलाइट (jQuery प्लगइन) पर एक नज़र डालें ।
बस टोनी मिलर के जवाब में जोड़ने के रूप में यह मुझे 90% की ओर मिला जो मैं देख रहा था लेकिन फिर भी काम नहीं किया। .length > 0;
उनके कोड के अंत में जोड़कर मेरी स्क्रिप्ट काम कर रही थी।
$(function() {
var foundin = $('*:contains("I am a simple string")').length > 0;
});
foundin += '*';
यह कार्य करना चाहिए। जब तक हमें पत्ती नोड्स की एक अलग सूची नहीं मिलती है, मूल रूप से एक पुनरावर्ती खोज करता है।
function distinctNodes(search, element) {
var d, e, ef;
e = [];
ef = [];
if (element) {
d = $(":contains(\""+ search + "\"):not(script)", element);
}
else {
d = $(":contains(\""+ search + "\"):not(script)");
}
if (d.length == 1) {
e.push(d[0]);
}
else {
d.each(function () {
var i, r = distinctNodes(search, this);
if (r.length === 0) {
e.push(this);
}
else {
for (i = 0; i < r.length; ++i) {
e.push(r[i]);
}
}
});
}
$.each(e, function () {
for (var i = 0; i < ef.length; ++i) {
if (this === ef[i]) return;
}
ef.push(this);
});
return ef;
}