لا يمكن الحد من "العودة خطأ" للعنصر الوالد فقط ؛ يريد الأطفال أن يعودوا صحيحين!

StackOverflow https://stackoverflow.com/questions/2543321

  •  23-09-2019
  •  | 
  •  

سؤال

هذه هي المرة الأولى لي هنا ، لذلك آمل ألا أخرج غبيًا جدًا!

لدي مشكلة بسيطة للغاية في jQuery: لدي التنقل المستند إلى UL الذي تم إنشاؤه بواسطة قاعدة البيانات وأريد أن تحتوي على عناصر قائمة تحتوي على قوائم أخرى للتبديل التي تعرض تلك القوائم الموجودة. تبدو قوائم (تم إنشاؤها) مثل هذا (رمز WordPress ؛ تجاهل اليابانيين):

<div class="block first">
<ul class="counts">
    <li class="cat-item cat-item-43">
        <a href="http://localhost/crg/?cat=43" title="View all posts filed under その他制作物">その他制作物</a>
    </li>
    <li class="cat-item cat-item-3">
        <a href="http://localhost/crg/?cat=3" title="View all posts filed under クライアント">クライアント</a>
        <ul class='children'>
            <li class="cat-item cat-item-4">
                <a href="http://localhost/crg/?cat=4" title="View all posts filed under マイクロソフト">マイクロソフト</a>
            </li>
            <li class="cat-item cat-item-9">
                <a href="http://localhost/crg/?cat=9" title="View all posts filed under 夢">夢</a>
            </li>
            <li class="cat-item cat-item-8">
                <a href="http://localhost/crg/?cat=8" title="View all posts filed under 生">生</a>
            </li>
        </ul>
    </li>
</ul>

وإليك jQuery الذي كتبته إلى: أولاً ، إخفاء جميع ul.children's Inside Li.cat-item's ؛ ثانياً ، قم بتطبيق وظيفة تبديل وعودة خاطئة على تلك li.cat-item التي لديها ul.children ، تاركين الروابط في الداخل في وظيفتهم الافتراضية.

<script type="text/javascript">
$(document).ready(function() {
    var children = $("li.cat-item:has(ul.children)>ul.children").hide();
    $("li.cat-item:has(ul.children)").click(function(){
        $(this).find('ul.children').toggle();
        return false;
    });
});

المشكلة هي أن "Return False" يتم تطبيقه على كل شيء داخل الحاوية ويبدو أن لا شيء أفعله يستبعدهم من الاختيار. أي شخص يعرف ما أفعله خطأ؟

شكرا لك مقدما

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

المحلول

فعلتها.

<script type="text/javascript">
$(document).ready(function() {
    var children = $("li.cat-item:has(ul.children)>ul.children").hide();
    $("li.cat-item:has(ul.children) > a").click(function(){
        $(this).siblings('ul.children').toggle();
        return false;
    });
});

اضطررت إلى استهداف علامة "A" داخل LI ، وليس LI نفسه.

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