আমি মনে করি যে প্রথমে আপনাকে "নিকটতম" অর্থ কী তা নির্ধারণ করতে হবে। আপনি যদি বংশোদ্ভূত নোডকে প্যারেন্টাল লিঙ্কগুলির তুলনায় স্বল্পতম দূরত অনুসারে আপনার মাপদণ্ডের সাথে মিলে যায়, তবে ": প্রথম" বা ".eq (0)" ব্যবহার করে প্রয়োজনীয়ভাবে কাজ করবে না:
<div id='start'>
<div>
<div>
<span class='target'></span>
</div>
</div>
<div>
<span class='target'></span>
</div>
</div>
উদাহরণস্বরূপ, দ্বিতীয় ".মার্জ" <span>উপাদানটি "শুরু" এর "কাছাকাছি" <div>, কারণ এটি কেবলমাত্র পিতামাতার একদম দূরে। যদি আপনি "নিকটতম" বলতে চাইছেন তবে আপনাকে ফিল্টার ফাংশনে ন্যূনতম দূরত্বটি খুঁজে পেতে হবে। একটি jQuery নির্বাচক থেকে ফলাফল তালিকা সর্বদা DOM ক্রমে থাকে।
হতে পারে:
$.fn.closestDescendant = function(sel) {
var rv = $();
this.each(function() {
var base = this, $base = $(base), $found = $base.find(sel);
var dist = null, closest = null;
$found.each(function() {
var $parents = $(this).parents();
for (var i = 0; i < $parents.length; ++i)
if ($parents.get(i) === base) break;
if (dist === null || i < dist) {
dist = i;
closest = this;
}
});
rv.add(closest);
});
return rv;
};
এটি হ্যাক প্লাগিনটি সাজানোর মতো কারণ এটি ফলাফল অবজেক্টটি তৈরি করে, তবে ধারণাটি হ'ল আপনি খুঁজে পাওয়া সমস্ত মিলের উপাদানগুলির মধ্যে সবচেয়ে ছোট পিতামাতার পথটি খুঁজে পেয়েছেন। এই কোডটি কারণ কারণে ডোম গাছের বাম দিকে উপাদানগুলির প্রতি পক্ষপাতিত্ব করে< ; <=পক্ষপাতদুষ্ট হবে।
.find("filter here").eq(0)?