سؤال

لدي فئة واحدة من divs ('Open') تحتوي على فئة أخرى من divs ('العناصر') مثل هذا:

<div class="open">
    <div class="item">
    this is a test 1
    </div>

    <div class="item">
    this is a test 2
    </div>
</div>

ما أتطلع إلى فعله هو انزلاق جميع divs فئة "العنصر" الموجودة في الفصل "المفتوح" الذي تم النقر عليه.

حتى الآن لدي

$(document).ready(function () {

    $('.open').click(function () {

        $(this).find(':first-child').slideDown('1000');

    });

لكنها لا تعمل. أي اقتراحات؟

شكرا ، جون

هل كانت مفيدة؟

المحلول

بدلاً من :first-child انت تريد الأطفال المباشرين, ، والتي يمكنك الحصول عليها في هذه الحالة باستخدام .children(), ، مثله:

$('.open').click(function () {
  $(this).children().slideDown('1000');
});

:first-child هو للحصول على عنصر الطفل الأول في كل مستوى (وفي كل "فرع") ، .children() أو ال محدد الأطفال (>) هي للحصول على جميع الأطفال الفوريين/"المستوى الأول".

نصائح أخرى

ماذا عن

$(".open").click(function() {
    $(this).children().slideDown(1000);
});

أولاً ، أفترض أنك تغلق بالفعل $(document).ready, ، لأنه في كتلة الكود التي نشرتها ، لم يتم إغلاقها. تأكد من قيامك بذلك في الكود الخاص بك.

ثانياً ، ألا تبحث فقط children() من .open؟ في هذه الحالة تريد

$(document).ready(function() {
  $('.open').click(function() {
    $(this).children('.item').slideDown('1000');
  });
});

تحرير: بفضل التعليقات ، قمت بإزالة live() اقتراح.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top