বলুন যে কোনও ওয়েব পৃষ্ঠার একটি স্ট্রিং রয়েছে যেমন "আমি একটি সাধারণ স্ট্রিং" যা আমি সন্ধান করতে চাই। আমি কীভাবে JQuery ব্যবহার করে এটি সম্পর্কে যাব?
বলুন যে কোনও ওয়েব পৃষ্ঠার একটি স্ট্রিং রয়েছে যেমন "আমি একটি সাধারণ স্ট্রিং" যা আমি সন্ধান করতে চাই। আমি কীভাবে JQuery ব্যবহার করে এটি সম্পর্কে যাব?
উত্তর:
jQuery এর পদ্ধতি রয়েছে। আপনার জন্য একটি স্নিপেট এখানে:
<script type="text/javascript">
$(function() {
var foundin = $('*:contains("I am a simple string")');
});
</script>
উপরের নির্বাচক লক্ষ্যবস্তু স্ট্রিং রয়েছে এমন কোনও উপাদান নির্বাচন করে। ফাউন্ডিনটি একটি jQuery অবজেক্ট হবে যাতে কোনও মিলযুক্ত উপাদান রয়েছে। এপিআই তথ্যটি এখানে দেখুন: https://api.jquery.com/contains-selector/
'*' ওয়াইল্ডকার্ডের সাথে একটি বিষয় লক্ষণীয় হ'ল আপনি এইচটিএমএল সহ সমস্ত উপাদান পাবেন যা আপনি সম্ভবত চান না body এজন্য jQuery এবং অন্যান্য জায়গাগুলির বেশিরভাগ উদাহরণ $ ('ডিভ: ধারণ করে ("আমি একটি সাধারণ স্ট্রিং")' 'ব্যবহার করি)
সাধারণত jQuery নির্বাচনকারীরা DOM এর "পাঠ্য নোড" এর মধ্যে অনুসন্ধান করে না। তবে আপনি যদি অনুচ্ছেদে () ফাংশনটি ব্যবহার করেন তবে পাঠ্য নোডগুলি অন্তর্ভুক্ত করা হবে, তবে আপনি কেবল পাঠ্য নোডগুলি ফিল্টার করতে নোডটাইপ সম্পত্তি এবং পাঠ্য স্ট্রিং অনুসন্ধান করতে নোডভ্যালু সম্পত্তি ব্যবহার করতে পারেন।
$ ('*', 'দেহ') .andSelf () .contents () .filter (ফাংশন () { এটি.নোডটাইপ === 3 প্রদান করুন; }) .filter (ফাংশন () { // পাঠ্যের যে কোনও জায়গায় 'সরল স্ট্রিং' থাকলে কেবল মিল হয় match this.nodeValue.indexOf ('সরল স্ট্রিং') ফেরান! = -1; }) .each (ফাংশন () { // এই.নোডভ্যালু দিয়ে কিছু করুন });
.andSelf()
। Api.jquery.com/andSelf থেকে : "jQuery অবজেক্টগুলি একটি অভ্যন্তরীণ স্ট্যাক বজায় রাখে যা উপাদানগুলির সাথে মেলে সেটের পরিবর্তনের উপর নজর রাখে the DOM ট্র্যাভারসাল পদ্ধতিগুলির মধ্যে একটি যখন ডাকা হয়, তখন উপাদানগুলির নতুন সেটটি স্ট্যাকের দিকে ঠেলা যায় If পূর্ববর্তী উপাদানগুলির সেটটিও পছন্দসই, এবং নিজেই সাহায্য করতে পারে) " আমি আগের কোনও প্রসঙ্গ দেখছি না, আমি কী মিস করছি?
এটি কেবলমাত্র পাতার উপাদান নির্বাচন করবে যা "আমি একটি সাধারণ স্ট্রিং" রয়েছে।
$('*: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;
আপনি শুধু দখল করতে চান "আমি একটি সহজ স্ট্রিং am" । প্রথমে এর মতো কোনও উপাদানটিতে পাঠ্যটি মোড়ানো করুন।
$('*: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');
এমনকি যদি আপনার এইচটিএমএল এর মত দেখায় এটি কাজ করবে:
<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;
}