2015-02-05 3 views
1

У меня была функция javascript showHide (shID), которая является функцией скрыть div и показать содержимое после нажатия «читать дальше». Вот моя Fiddle: FiddleJQuery Cookie не работает

после добавления в эту функцию JQuery Cookie, похоже на функцию showHide (shID), может ли кто-нибудь помочь мне исправить это? спасибо, мне очень нужна помощь. here my Fiddle: Fiddle

Мне нужно сделать smtg следующим образом: сначала нажмите «readmore», скрытый контент покажет, после того, как cookie cookie и пользователь вернутся, чтобы увидеть мою скрытую страницу на странице, которая показывается.

<div id="wrap"> 
    <a href="#" id="example-show" class="showLink" onclick="showHide('example');"> 
     <button class="btn-u btn-u-lg btn-block btn-u-dark-orange"> 
     Read More 
     </button> 
    </a> 
    <div id="example" class="more"> 
     <iframe width="600" height="315" src="//www.youtube.com/embed/BaPlMMlyM_0" frameborder="0" allowfullscreen></iframe> 
     <p>Congratulations! You've found the magic hidden text! Clicking the link below will hide this content again.</p> 
    </div> 
</div> 
+0

JQuery Cookie - это плагин. И вам нужно включить его отдельно. Исправьте меня, если я ошибаюсь – demo

+0

Привет, demo, Спасибо за ответ, я тоже не уверен с этим, мой первый раз, чтобы использовать JQuery cookie – lucas

+0

, пожалуйста, смотрите это http://plugins.jquery.com/cookie/ Я думаю, что вам нужно скачать и добавить библиотеку в проект – demo

ответ

3

Я изменил логику сценария немного: показать содержание, когда showhide-... установлен в 1. Также я добавил параметр к функции showHide: setCookie. Когда это false, cookie не установлен/изменен.

function showHide(setCookie) { 
    var shID = $(this).data("showhide") 
     , $shEl = $("#" + shID) 
     , $showHide = $("#" + shID + '-show') 
     ; 

    if ($shEl.is(":hidden")) { 
     if (setCookie !== false) { 
      jQuery.cookie("showhide-" + shID, 1); 
     } 
     $showHide.hide(); 
     $shEl.show(); 
    } else { 
     if (setCookie !== false) { 
      jQuery.cookie("showhide-" + shID, 0); 
     } 
     $showHide.show(); 
     $shEl.hide(); 
    } 
} 

jQuery(document).ready(function() { 
    $("#example-show").on("click", showHide); 
    if (jQuery.cookie("showhide-" + "example") == '1') { 
     showHide.call($("#example-show").get(0), false); 
    } 
}); 

Чтобы добавить истекают дату, просто передать третий аргумент $.cookie вызова:

var date = new Date(); 
var minutes = 30; 
date.setTime(date.getTime() + (minutes * 60 * 1000)); 
$.cookie("example", "foo", { expires: date }); 

(обратитесь к How to expire a cookie in 30 minutes using jQuery? для получения дополнительной информации)

JSFIDDLE

+0

Привет, Ионика Бизау, действительно спасибо за вашу помощь! Это отлично работает для меня! Однако, как я могу установить для этого дату истечения 1 дня? Благодаря ! = D – lucas

+0

@ lucas Cool. См. Редактирование. –

+0

Я прав? если я так писал? поставьте 1 минуту как тестирование http://jsfiddle.net/Garfrey/3Lzytvqy/4/, что я должен изменить в «foo». – lucas

0

Названия печенья чувствительны к регистру, и вы должны прочитать одно и то же имя cookie, которое вы задали раньше. В вашем случае вы установили jQuery.cookie("showHide-"+shID, 1) и отметьте jQuery.cookie("showhide-" + "example"). «showHide-» и «showhide-» несовместимы.

EDIT:

if (document.getElementById(shID + '-show').style.display != 'none') { 
     // Set cookie when button has been clicked 
     jQuery.cookie("showhide-"+shID, 1); 
     // ... 
    } else { 
     jQuery.cookie("showhide-"+shID, 0); 
     // ... 
    } 

    if (jQuery.cookie("showhide-" + "example") == 1) { 
     // Trigger button click if cookie is set 
     $("#example-show").trigger("click"); 
    } 
+0

Привет, rba, спасибо за ваш ответ, значит, мне просто нужно поставить «showhide» в «showHide» правильно? Я пробовал это, прежде чем не работал – lucas

+0

Возможно, вам просто нужно разместить триггер кнопки, когда cookie установлен, когда вы делаете это обратно. От вас ответ, кажется, вы хотите «установить cookie и пользователь вернуться, чтобы посетить мою страницу скрытого содержимого, пока еще показывающую», а в вашем комментарии в коде вы пытаетесь «// Cookie не установлен так показать div». – rba

+0

да, мне нужно «установить cookie и пользователь вернуться, чтобы посетить мою страницу с скрытым контентом, пока еще показывающим» ... извините, я не очень понимаю, вы можете сделать для меня скрипту для примера? Мне нужен мой побочный проект, и я новичок в javascript тоже ..thanks rba, – lucas

Смежные вопросы