jQuery: পাঠ্য অনুসারে উপাদান সন্ধান করুন


308

এটির পরিবর্তে কোনও উপাদান এর ভিত্তিতে কোনও উপাদান খুঁজে পাওয়া সম্ভব কিনা তা কি আমাকে বলতে পারেন? আইডি বা ক্লাসের ?

আমি এমন উপাদানগুলির সন্ধানের চেষ্টা করছি যাগুলির পৃথক ক্লাস বা আইডি নেই। (তারপরে আমার তখন সেই উপাদানটির পিতামাতার সন্ধান করা উচিত))



উত্তর:


432

আপনি :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>


2
দুর্দান্ত, তবে এটি সংবেদনশীল। যাইহোক আমরা কি কোনও মামলা সংবেদনশীল অনুসন্ধান করতে পারি?
দিপু রাজ

123
@ দিপুরাজ: এর .filterপরিবর্তে আপনাকে ব্যবহার করতে হবে। $('div').filter(function(){ return $(this).text().toLowerCase() === 'test';})
রকেট হাজমত

5
হ্যাঁ, দয়া করে @ রকেটহাজম্যাট ব্যবহারের অ্যাপ্যাচটি ব্যবহার করুন, বলুন যে আপনার কাছে 'রেজিস্টার চুক্তি' সহ সমস্ত উপসর্গ রয়েছে এবং প্রত্যেকটির একটি সংখ্যার প্রত্যয় রয়েছে। আপনি সেগুলি সব শেষ করে শেষ করবেন , যখন বাস্তবে আপনি কেবল পাঠ্যের সাহায্যে উপাদানটি চান: 'চুক্তির নিবন্ধন করুন 26'
ফেং হুও

1
যদিও: রয়েছেগুলি কেস সংবেদনশীল, এটি আমার পক্ষে কাজ করেছে কারণ আমি সন্ধানের জন্য সঠিক পাঠ্য স্ট্রিংটি পেরিয়েছি।
ফ্রান্সিসকো কুইন্টারো

1
এটি যদি অন্য কাউকে তাদের প্যারেন্সে শূন্যস্থান ব্যবহার করতে সহায়তা করে তবে নিম্নলিখিতগুলি কাজ করে না :$('div:contains( "test" )').css('background-color', 'red');
এম কাটজ

92

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;
}

3
ঠিক এই সঠিক সমস্যার মধ্যে দৌড়ে। এটি আরও বেশি হওয়া উচিত।
ডিকিবয়

2
এই সমাধান নিম্নলিখিত দৃশ্যকল্প ব্যর্থ পারে: <li>Hello <a href='#'>World</a>, How Are You. । এখানে যদি Howঅনুসন্ধান করা হয় তবে শর্তটি ব্যর্থ হবে বলে আমি মনে করি।
me_digvijay

23

ফেলাস, আমি জানি এটি পুরানো তবে ওহে আমি এই সমাধানটি করেছি যা আমি মনে করি সবার চেয়ে ভাল কাজ করে। প্রথম এবং সর্বাগ্রে কেস সেনসিটিভিটি কাটিয়ে উঠেছে যা jquery: রয়েছে () এর সাথে প্রেরণ করা হয়েছে:

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()

আশা করি অদূর ভবিষ্যতে কেউ এটি সহায়ক বলে মনে করেছেন।


ডাব্লু / ও .contents().filterএটি শিশুদের জন্য কাজ করবে না
রিকি লেভি

18

রকেটের উত্তর কার্যকর হয় না।

<div>hhhhhh
<div>This is a test</div>
<div>Another Div</div>
</div>

আমি কেবল এখানে তার ডেমোটি সংশোধন করেছি এবং আপনি দেখতে পারবেন যে ডমটি নির্বাচন করা হয়েছে।

$('div:contains("test"):last').css('background-color', 'red');

এটি ঠিক করার জন্য কোডটিতে " : শেষ " নির্বাচক যুক্ত করুন।


এটি সবচেয়ে ভাল কাজ করে যখন নির্বাচক একাধিক ফলাফল প্রত্যাবর্তন করে এবং আপনাকে এটিকে একটি নির্দিষ্ট উপাদানটিতে সংকুচিত করতে হবে যেখানে আপনার রেফারেন্সের কোনও "আইডি" বৈশিষ্ট্য নেই।
তাহির খালিদ

14

আমার মতে সেরা উপায়।

$.fn.findByContentText = function (text) {
    return $(this).contents().filter(function () {
        return $(this).text().trim() == text.trim();
    });
};

8

হ্যাঁ, jQuery containsনির্বাচনকারী ব্যবহার করুন ।


10
এর, কোনটি নেই: 'রয়েছে:' খড়ের খড়ের মধ্যে সূচ (অতএব নাম) রয়েছে কিনা তা কেবল সঠিক ম্যাচটি করে না ... অন্যরা এখানে যেমন বলেছে
মাইক রডেন্ট

3
এটি কোনও উত্তর নয়।
lharby

4

নিম্নলিখিত jQuery ডিভ নোডগুলি নির্বাচন করে যেখানে পাঠ্য রয়েছে তবে তাদের কোনও সন্তান নেই, যা ডিওএম গাছের পাতার নোড।

$('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>


এটাই সেরা উত্তর!
Calciol
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.