على سبيل المثال ، هناك 10 LIS في ul One ، وهناك أسلوب خاص على LI الثالث (مثل اللون أحمر ، والآخرون أسود). أريد ضبط لون جميع lis الأخرى - لا بما في ذلك Red Lis - إلى اللون الأحمر. في هذا الوقت ، تحتاج إلى الحصول على جميع العقد الأخ في Red Lis.
الإخوة هم أولئك الذين هم نفسك ، ولا السابق أو التالي ، وقد يكون هناك (أخ) أكبر منك أو أصغر منك. وبالمثل ، يتم استخدام العقد الأخ. فيما يلي طريقة منتظمة للحصول على العقد الأخ.
الرمز كما يلي
شقيقات الوظائف (elm) {var a = [] ؛ var p = elm.parentnode.children ؛ for (var i = 0 ، pl = p.length ؛ i <pl ؛ i ++) {if (p [i]! == elm) a.push (p [i]) ؛}الفكرة: أولاً ، احصل على جميع أطفال العقدة الوالدية لهذا العنصر. نظرًا لأن جميع الأطفال يتضمنون أيضًا هذا العنصر نفسه ، يجب عليك إزالة نفسك من النتيجة.
هناك طريقة أخرى تبدو غريبة ، وهي الحصول على رمز المصدر لعقد الأخ في jQuery:
الرمز كما يلي
وظيفة Sibling (elem) {var r = [] ؛ var n = elem.parentnode.firstchild ؛ for (؛ n ؛ n = n.nextsibling) {if (n.nodeType === 1 && n! == elem) {r.push (n) ؛}}}الفكرة: أولاً ، ابحث عن عقدة الطفل الأولى للعقدة الأصل لهذا العنصر ، ثم حلقة للعثور على عقدة Brother التالية لهذه العقدة حتى يتم الانتهاء من البحث.
أتساءل لماذا يستخدم jQuery هذه الطريقة. هل هذه الطريقة أكثر كفاءة من الطريقة الأولى؟
بعد اختباري الأولي - أكثر من 1500 LI ، لا يوجد طريقتان أعلاه لا يوجد فرق تقريبًا في الكفاءة ، وكلاهما ناجحان في غضون بضعة ميلي ثانية. بيئة الاختبار هي Chrome و Firefox.
إذا كنت بحاجة إلى الحصول على جميع العقد الأخوة ، فيمكنك استخدام أي من الطرق المذكورة أعلاه.
بالطبع ، سوف أتحقق من الطريقتين أعلاه في المستقبل. إذا كان هناك أي اختلافات ، فسوف أقوم بتحديثها.
وسيلة البحث عن عقدة Jquery ، طريقة البحث عن عقدة Jquery
jquery.parent (expr) ابحث عن العقدة الأصل ، يمكنك تمرير Expr للتصفية ، مثل $ ("span"). parent () أو $ ("span").
jquery.parents (expr) ، على غرار jquery.parents (expr) ، لكنها تبحث عن جميع عناصر الأجداد ، لا تقتصر على عناصر الوالدين
jquery.children (expr). يعيد جميع العقد الفرعية. ستؤدي هذه الطريقة إلى إرجاع العقد المباشرة فقط ولن تُرجع جميع العقد الفرعية.
jquery.contents () ، يعيد جميع المحتويات التالية ، بما في ذلك العقد والنص. الفرق بين هذه الطريقة والأطفال () هو أنه ، بما في ذلك النص الفارغ ، سيتم استخدامه أيضًا كـ
إرجاع كائن jQuery ، ستعيد الأطفال () العقدة فقط
jquery.prev () ، إرجاع عقدة الأخوة السابقة ، وليس جميع العقد الأخوة
jquery.prevall () ، إرجاع جميع العقد الشقيقة السابقة
jquery.next () ، يعيد عقدة الأخوة التالية ، وليس جميع العقد الأخوة
jquery.nextall () ، إرجاع جميع العقد الشقيقة اللاحقة
jquery.siblings () ، يعيد عقدة الأخوة ، بغض النظر عن الأمام والخلف
JQuery.find (expr) ، يختلف تمامًا عن jquery.filter (expr). jquery.filter () هو تصفية جزء من مجموعة كائن jQuery الأولية ، بينما jquery.find ()
لن تحتوي نتيجة الإرجاع على محتوى في المجموعة الأولية ، مثل $ ("P") ، Find ("span") ، ابدأ في البحث عن <span> من العنصر <p> ، الذي يعادل $ ("P span")
المقالة أعلاه JS للحصول على جميع العقد الأخوة للعناصر هي كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.