JQuery নির্বাচক "সমস্ত কিন্তু না"


90

আমি এইচটিএমএল মার্কআপে সমস্ত ডিভগুলি নিম্নরূপে (jQuery ব্যবহার করে) নির্বাচন করতে পারি:

$('div')

তবে আমি উপরের নির্বাচন থেকে একটি নির্দিষ্ট div(বলার id="myid") বাদ দিতে চাই ।

Jquery ফাংশন ব্যবহার করে আমি কীভাবে এটি করতে পারি?


4
নির্বাচকটি jquery এ ব্যবহার করুন
অভিজিৎ

উত্তর:


171

সাধারণ:

$('div').not('#myid');

ব্যবহার .not()দ্বারা ফিরে সেট থেকে এটা দেওয়া নির্বাচক দ্বারা মেলানো উপাদান মুছে ফেলা হবে $('div')

আপনি :not()নির্বাচকটিও ব্যবহার করতে পারেন :

$('div:not(#myid)');

উভয় নির্বাচক একই কাজ করেন, তবে :not()দ্রুত , সম্ভবতঃ jQuery এর নির্বাচক ইঞ্জিন সিজল এটিকে একটি স্থানীয় .querySelectorAll()কল হিসাবে অনুকূল করতে পারে।


4
@ রায়নোস আমি মনে করি না যে এটি অগত্যা খারাপ , তবে ব্যবহার .not()করা অনেক বেশি , তার চেয়ে অনেক বেশি ভাল :not()
বোজ্যাঙ্গলেস

4
আমি মনে করি এটি হওয়া উচিত $('div:not(#myid)');(উদ্ধৃতি ব্যতীত)। @ রায়নোস: কেন? :not()একটি CSS3 নির্বাচক। querySelectorAllসমর্থিত হলে jQuery সিলেক্টরকে সরাসরি পাস করতে পারে ...
ফেলিক্স ক্লিং

@ ফেলিক্সক্লিং এটি নির্বাচকদের অংশ হিসাবে ঠিক আছে । তবে jQuery এ এটি ধীর .notএবং কম পাঠযোগ্য। আমার বলা উচিত ছিল: "jQuery তে নির্বাচক নন"
রায়নস

@ রায়নোস: কোনও নির্বাচক অনুমানের মধ্যে কোটের কোনও উদ্ধৃতি অনুমতি দেয় নি :not()। নির্বাচক 4-এ এই নির্বাচকও নতুন নন, বা কোটের অনুমতি দেওয়ার জন্য এটি পরিবর্তন করা হয়নি। যদিও আরও জটিল নির্বাচকদের অনুমতি দেওয়ার জন্য এটি পরিবর্তন করা হয়েছে। আমি আপনার মন্তব্যে ভুল
বোঝে না হলে

4
@ পিটারক্রস আমি সবেমাত্র একটি জেএসফিউচার বেঞ্চমার্ক করেছি যা querySelectorAllদ্রুততম হিসাবে চিহ্নিত হয়েছে । একটি বাস্তব বিশ্বের মানদণ্ড নয়, তবে jQuery অভ্যন্তরীণ থেকে কোনও ওভারহেড নেই বলে দেখার আশা করা যায়। :not()বাস্তবে দ্রুততর, সম্ভবতঃ সিজল জানেন যে এটি এটি ব্যবহারের জন্য অনুকূল করতে পারেquerySelectorAll()
বোজাঙ্গলেস

9
var els = toArray(document.getElementsByTagName("div"));
els.splice(els.indexOf(document.getElementById("someId"), 1);

আপনি এটি কেবল পুরানো ধাঁচে করতে পারেন। এত সহজ কিছু সহ জিকুয়ের দরকার নেই।

প্রো টিপস:

ডোম উপাদানগুলির একটি সেট কেবল একটি অ্যারে, তাই আপনার পছন্দসই toArrayপদ্ধতিটি একটিতে ব্যবহার করুন NodeList

একটি সেটে উপাদান যুক্ত করা ঠিক

set.push.apply(set, arrOfElements);

একটি সেট থেকে একটি উপাদান অপসারণ হয়

set.splice(set.indexOf(el), 1)

আপনি একবারে একাধিক উপাদান সহজেই সরাতে পারবেন না :(


4
আজকাল (2017) সম্ভবত নেটিভ জাভাস্ক্রিপ্ট ব্যবহারে .querySelector()বা .querySelectorAll()সঙ্গে div:not(#myid) দ্রুততর ... এটা কি?
পিটার ক্রাউস

8
$("div:not(#myid)")

[ডক]

বা

$("div").not("#myid")

[ডক]

একটি আইডি বাদে সমস্ত নির্বাচন করার প্রধান উপায়

আপনি এখানে ডেমো দেখতে পারেন


আজ (2017) সম্ভবত $("div:not(#myid)") দ্রুততর ... দেশীয় জাভাস্ক্রিপ্ট ব্যবহার করার সময় বা এর জন্য সিজলেজ অপ্টিমাইজেশন পরীক্ষা করুন । .querySelector().querySelectorAll()
পিটার ক্রাউস

4
   var elements =  $('div').not('#myid');

এতে আইডি 'ম্যারিড' বাদে সমস্ত ডিভ অন্তর্ভুক্ত থাকবে




3

আপনি .notjQuery লাইব্রেরির সম্পত্তি ব্যবহার করুন :

$('div').not('#myDiv').css('background-color', '#000000');

এটি এখানে কর্মে দেখুন । ডিভ # মাইডিভ সাদা হবে।

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