سؤال

أنا أستخدم المكون الإضافي JQuery TreeView. إلقاء نظرة على "العينة 1 - الافتراضي" المتوفرة على الصفحة التجريبية للمكون الإضافي http://jquery.bassistance.de/treeview/demo/. في حالتي ، جميع المجلدات والملفات هي روابط. إذا قمت بالنقر على سبيل المثال على "المجلد 2" الموسع ، فسوف ينهار أولاً ثم اتبع إلى موقع الرابط. إن السلوك الذي أود أن أود أن يتوسع فقط في الانهيار سيتوسع أولاً ، وإذا تم توسيعه بالفعل ، فسوف يظل هكذا.

الكود في البرنامج المساعد (jQuery.treeview.js) الذي ي التبديل السلوك هو ما يلي:

66 this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) {
67 toggler.apply($(this).next());
68 }).add( $("a", this) ).hoverClass(); 

لقد اكتشفت بالفعل كيفية الحصول على جميع الروابط ، والتي يجب تغييرها:

$('a').parent().parent().filter('.collapsable')

ستكون النتيجة مجموعة من جميع LI قابلة للانهيار حاليًا (موسعة): [li. ، li.collapsable

لكني لا أعرف كيف أتقدم من هناك:-(آمل أن يتمكن شخص ما من مساعدتي على طول ...

لقد قمت بالفعل بتغييره بشكل نجس على الرابط المحدد (class = محدد) الحالي مع هذا الرمز:

    $(".current").click(function(e){
        e.preventDefault();
    });

شكرا كثيرا مسبقا!

لا يوجد حل صحيح

نصائح أخرى

ربما لم يكن من الواضح ما أريد حقًا القيام به ، لذا سأحاول تحسين تعويضاتي في المرة القادمة ؛-)

الجواب على سؤالي هو:

$('li').filter('.collapsable').find('a:first:not(.current)').click(function(e){
            e.stopImmediatePropagation();
        });

ربما يساعد شخص يبحث عن شيء مشابه.

مع أطيب التحيات!!

تحديث (الحل المنشور أعلاه لا يعمل إذا قام المستخدم بتوسيع عقدة دون إعادة تحميل الصفحة بعد)

    $('a').click(function(e){
        if ($(this).is('.current')) {
            e.preventDefault();
        } else if ($(this).parent().parent().is('.collapsable')) {
            e.stopImmediatePropagation();
        };          
    });

هذا واحد يعمل لأنه من المفترض أن. :-)

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