إخفاء صفوف الجدول إذا كان ملف تعريف الارتباط موجود

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

  •  23-09-2019
  •  | 
  •  

سؤال

بناء على سؤالي السابق هنا و هنا, ، وجدت أنه يمكنني ضبط ملف تعريف الارتباط مع JavaScript. أريد الجمع بينه وبين jQuery للحصول على مجموعة ملفات تعريف الارتباط لصفوف الطاولة المتبادلة. أريد أن أبقي الصفوف المخفية مخفية عند إعادة التحميل.

هذا ما حققته حتى الآن:

// Load cookies if any   
if(readCookie('togState')) {
       $('table#toggle tr.' + readCookie('togState')).hide();
    }

    $(function() {
        $('table#toggle tr.container').click(function() {
          var idTog = $(this).attr('id');
            $(this).toggleClass('off').nextAll('.' + idTog).toggle();
            setCookie('togState', idTog, 30);
            alert('Cookies: ' + readCookie('togState'));
        });

});

الاباء: <tr id="parent-1" class="container">

الأطفال التاليون: <tr class="contained parent-1"> ، إلخ

كما ترون يتم قراءة ملف تعريف الارتباط ، ولكن لا يتم تعيينه على تحديث المتصفح. ما الخطأ الذي افعله؟

ما أريده هو إخفاء أي صفوف متولدة (وجود فصولهم مساوية لمعرف حاوية الوالدين) ، إذا تم النقر على الحاوية الأصل ، وبالتالي يتم تعيين ملف تعريف الارتباط.

أي مساعدة سيكون موضع تقدير كبير. شكرًا.

ملف تعريف الارتباط المصدر الذي استخدمته للتحقق السريع:

function setCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    setCookie(name,"",-1);
}

تحديث:

لقد جربت أيضًا كل وظيفة بلا حظ:

$('table#toggle tr.' + readCookie('togState')).each(function() {
     $(this).hide();
   });

تحديث 2:

إذا وضعت الشيك داخل jQuery (لقد استخدمت Hide ()) ، إنها تعمل، ولكن فقط لملف تعريف ارتباط واحد. لذا فإن المشكلة الفعلية الآن هي كيف تحتفظ بمزيد من ملفات تعريف الارتباط لمزيد من صفوف الوالدين؟

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

المحلول

إذا كنت تستخدم setCookie() تعمل من هذا الجواب, ، أنت تقوم بتعيين ملف تعريف الارتباط الخاص بك ليكون عمر 30 ثانية. ربما لم يكن هذا طويلاً بما يكفي لمتطلباتك ، وربما يجب أن تنظر في زيادة الأمر قليلاً. :-)

تعديل رد: تحرير سؤالك - إذا كنت تحاول تعيين ملفات تعريف الارتباط المتعددة ، فستواجه مشكلة في السطر التالي:

document.cookie = name+"="+value+expires+"; path=/";

هنا ، أنت فوق الكتابة cookie خاصية في كل مرة تتصل بها setCookie(). إذا كنت ترغب في تعيين ملفات تعريف الارتباط المتعددة ، فأنت بحاجة إلى إعداد/إلحاق زوج جديد/قيمة بالسلسلة مع كل مكالمة setCookie()

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