jQuery TreeView Plugin Change Rink Behavior (تجنب الانهيار)
-
23-09-2019 - |
سؤال
أنا أستخدم المكون الإضافي 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();
};
});
هذا واحد يعمل لأنه من المفترض أن. :-)