যখন আমি পেতে চাই, উদাহরণস্বরূপ, উপাদানগুলির তৃতীয় স্তরের পিতামাতাকে অবশ্যই লিখতে হবে এর $('#element').parent().parent().parent()
জন্য আরও কি কোনও সর্বোত্তম পদ্ধতি আছে?
যখন আমি পেতে চাই, উদাহরণস্বরূপ, উপাদানগুলির তৃতীয় স্তরের পিতামাতাকে অবশ্যই লিখতে হবে এর $('#element').parent().parent().parent()
জন্য আরও কি কোনও সর্বোত্তম পদ্ধতি আছে?
উত্তর:
যেহেতু পিতা-মাতা () পূর্বপুরুষের উপাদানগুলি বাইরের দিকের নিকটতম থেকে অর্ডার করা হয়, আপনি এটিকে () -এ চেইন করতে পারেন :
$('#element').parents().eq(0); // "Father".
$('#element').parents().eq(2); // "Great-grandfather".
$('.element').first().parents().eq(num);
[2]
করে অন্তর্নিহিত ডিওএম উপাদানটি ফিরিয়ে দেবে, ব্যবহার করে কোনও জিকুয়েরি eq(2)
বস্তু ফিরে আসবে।
আপনার প্রয়োজনগুলির উপর নির্ভর করে, যদি আপনি জানেন যে আপনার কী পিতামাতার সন্ধান করছেন আপনি .parents () নির্বাচকটি ব্যবহার করতে পারেন।
ইজি: http://jsfiddle.net/ হেনরিগারেল / কিপ 5 জি / 2 /
<div id="One">
<div id="Two">
<div id="Three">
<div id="Four">
</div>
</div>
</div>
</div>
var top = $("#Four").parents("#One");
alert($(top).html());
সূচক ব্যবহার করে উদাহরণ:
//First parent - 2 levels up from #Four
// I.e Selects div#One
var topTwo = $("#Four").parents().eq(2);
alert($(topTwo ).html());
আপনি লক্ষ্য পিতামাতাকে একটি আইডি বা শ্রেণি দিতে পারেন (উদাহরণস্বরূপ মাইপ্যারেন্ট) এবং রেফারেন্সটি সহ $('#element').parents(".myParent")
একটি দ্রুত উপায় হ'ল সরাসরি জাভাস্ক্রিপ্ট ব্যবহার করা, যেমন।
var parent = $(innerdiv.get(0).parentNode.parentNode.parentNode);
এটি আমার ব্রাউজারে জিকুয়েরি .parent()
কলগুলির শৃঙ্খলার চেয়ে উল্লেখযোগ্যভাবে দ্রুত চলে runs
কোনও উত্তর ব্যবহার করে খুঁজে পেল না closest()
এবং আমি মনে করি এটি প্রয়োজনীয়তম উত্তর যখন আপনি প্রয়োজনীয় উপাদানটি কত স্তরের জানেন না তাই একটি উত্তর পোস্ট করে:
আপনি closest()
নির্বাচকদের সাথে মিলিত প্রথম উপাদানটি মিলিয়ে ফাংশনটি ব্যবহার করতে পারেন উপাদান থেকে উপরের দিকে ট্র্যাশিংয়ের সময়:
('#element').closest('div') // returns the innermost 'div' in its parents
('#element').closest('.container') // returns innermost element with 'container' class among parents
('#element').closest('#foo') // returns the closest parent with id 'foo'
ইহা সহজ. শুধু ব্যবহার
$(selector).parents().eq(0);
যেখানে 0 হল প্যারেন্ট স্তর (0 পিতা বা মাতা, 1 পিতামাতার পিতা ইত্যাদি)
এইভাবে কেবল :eq()
নির্বাচক যুক্ত করুন :
$("#element").parents(":eq(2)")
আপনি কেবল কোন পিতামাতাকে সূচক নির্দিষ্ট করেছেন: তাত্ক্ষণিক পিতামাতার জন্য 0, গ্র্যান্ড-পিতামাতার জন্য 1, ...
যদি আপনি এই কার্যকারিতাটি পুনঃব্যবহার করার পরিকল্পনা করেন তবে অনুকূল সমাধানটি হ'ল jQuery প্লাগইন তৈরি করা:
(function($){
$.fn.nthParent = function(n){
var $p = $(this);
while ( n-- >= 0 )
{
$p = $p.parent();
}
return $p;
};
}(jQuery));
অবশ্যই, আপনি একটি selectচ্ছিক নির্বাচক এবং এই জাতীয় অন্যান্য বিষয়গুলির অনুমতি দেওয়ার জন্য এটি বাড়িয়ে দিতে চাইতে পারেন।
একটি নোট: এটি 0
পিতামাতার জন্য একটি ভিত্তিক সূচক ব্যবহার করে, তাই nthParent(0)
কল করার মতো parent()
। যদি আপনার পরিবর্তে 1
ভিত্তিক সূচক থাকে তবে ব্যবহার করুনn-- > 0
var p = 1 + n; while (p--) { $p = $p.parent(); }
এবং আপনি যদি 1 ভিত্তিতে পরিবর্তন করতে চান তবে জাভাস্ক্রিপ্টটি "মিথ্যা" হিসাবে আপনি ব্যবহার করতে পারেন: while (n--) { $p = $p.parent();}
একটি শর্তাধীন চেক সংরক্ষণ করুন
nthParent(-2)
? আপনার উদাহরণটি নষ্ট হয়ে গেছে।
(function($) { $.fn.nthParent = function(n) { return $(this).parents().eq(n); }; }(jQuery));
parents
যা একাধিক উপাদান সহ নির্বাচনের ক্ষেত্রে ভুল হবে।
var p = n >? (1 + n):1;
পরিবর্তে ব্যবহার করে "কিছুই না" বরং সেই ক্ষেত্রে প্রথম পিতামাতাকে ফিরে আসবে - বা যেখানে এটি আমার উদাহরণে লুপটি ভেঙে দেয়। হ্যাঁ, এটি সম্ভবত হওয়া উচিত: (function($) { $.fn.nthParent = function(n) { var $p = $(this); if (!(n > -0)) { return $() }; var p = 1 + n; while (p--) { $p = $p.parent(); } return $p; }; }(jQuery));
আপনি যদি কিছু ফিরিয়ে দিতে না চান তবে।
আপনার যদি একটি সাধারণ পিতামাতার ডিভি থাকে তবে আপনি পিতা-মাতার ব্যবহার () লিঙ্কটি ব্যবহার করতে পারেন
উদাহরণ: $('#element').parentsUntil('.commonClass')
সুবিধা হ'ল এই উপাদান এবং সাধারণ পিতামাতার (কমনক্লাস দ্বারা সংজ্ঞায়িত) মধ্যে কত প্রজন্ম রয়েছে তা আপনার মনে করার দরকার নেই।
আপনি এটি ব্যবহার করতে পারেন:
$(this).ancestors().eq(n)
উদা: $(this).ancestors().eq(2)
-> এর পিতামাতার পিতা this
।
আপনি এই জাতীয় কিছু ব্যবহার করতে পারেন:
(function($) {
$.fn.parentNth = function(n) {
var el = $(this);
for(var i = 0; i < n; i++)
el = el.parent();
return el;
};
})(jQuery);
alert($("#foo").parentNth(2).attr("id"));
EQ ব্যবহার করে গতিশীল ডিওএম দখল করতে দেখা যায় p
আমি উভয়কে এমন একটি উপাদানটিতে ব্যবহার করি যা ক্লাসগুলি অনমোভারওভারে এটি প্রয়োগ করে। eq ক্লাসগুলি দেখায় যখন পিতামাতা ()। পিতামাতা () না করে।
যেহেতু পিতামাতা () কোনও তালিকা ফেরত দেয়, এটিও কার্যকর হয়
$('#element').parents()[3];