سؤال

أريد أن أعرف كيفية كتابة عبارة if بشكل صحيح باستخدام jquery.لدي مجموعة من عناصر div مع مرساة في كل منها والتي عند النقر عليها يتم توسيع عرض div باستخدام toggleClass.يعمل هذا بشكل جيد ولكني أريد أن أكتب عبارة if التي تتحقق لمعرفة ما إذا كانت عناصر div الأخرى لها نفس الفئة المطبقة، إذا كان الأمر كذلك قم بتعاقد مع div، ثم قم بتوسيع div التالي (آمل أن يكون ذلك منطقيًا)، الكود الخاص بي حتى الآن:

لغة البرمجة:

<div class="content-block">
    <h2>Title</h2>
    <p>Content...</p>
    <a class="expand" href="#">Expand View</a>
</div>
<div class="content-block">
    <h2>Title</h2>
    <p>Content...</p>
    <a class="expand" href="#">Expand View</a>
</div>
<div class="content-block">
    <h2>Title</h2>
    <p>Content...</p>
    <a class="expand" href="#">Expand View</a>
</div>
<div class="content-block">
    <h2>Title</h2>
    <p>Content...</p>
    <a class="expand" href="#">Expand View</a>
</div>

مسج:

$(document).ready(function(){
$('a.expand').click(function(){
    $(this).parent('.content-block').toggleClass('wide');
});

});

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

المحلول

يمكنك القيام بذلك بهذه الطريقة، لا حاجة لـ if في هذه الحالة:

$(document).ready(function(){
  $('a.expand').click(function(){        
    $(this).parent('.content-block').toggleClass('wide')
           .siblings('.wide').removeClass('wide');
  });
});

يؤدي هذا إلى تبديل الفئة الواسعة على الأصل، ثم إزالة الفئة من جميع أشقائها.

نصائح أخرى

لا حاجة لبيان if ، ما عليك سوى تشغيل removeClass() على أي شيء لديه wide الطبقة المطبقة عليها:

$(document).ready(function(){
    $('a.expand').click(function(){
        $('.content-block.wide').removeClass('wide');
        $(this).parent('.content-block').addClass('wide');
    });
});

ومن أجل الأداء ، فقط استخدم addClass() و removeClass() بدلاً من toggleClass()

تريد أن تكتب شيئًا كهذا:

var otherExpanded = $('.content-block.wide');
if (otherExpanded.length)
    //Do things
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top