2015-01-31 3 views
0

У меня была функция javascript showHide (shID), которая является функцией скрыть div или показать содержимое после нажатия «читать дальше». Вот моя Fiddle: http://jsfiddle.net/Garfrey/5xf72j4m/8/JQuery cookie set in other Function

Как вы видите, когда пользователь нажимает на нее и показывает больше контента, но мне просто нужно скрыть один раз, значит, когда пользователь возвращается к моей странице, а скрытый контент все еще отображается. Так что мне нужно добавить JQuery cookie, но то, что я написал, было неправильным, и оно не работает. Я новый в Javascript. Кто-нибудь знает, как это исправить? спасибо заранее, мне действительно нужна помощь.

вот мой код функции:

<script language="javascript" type="text/javascript"> 
jQuery(document).ready(function(){ 
    if($.cookie("example")=='1') { 
     function showHide(shID) { 
     if (document.getElementById(shID+'-show').style.display != 'none') { 
     document.getElementById(shID+'-show').style.display = 'none'; 
     document.getElementById(shID).style.display = 'block'; 
     } 
     else { 
     document.getElementById(shID+'-show').style.display = 'inline'; 
     document.getElementById(shID).style.display = 'none'; 
     } 
    } 
    } else { 

     $.cookie("example", "1"); 
    }     
}); 

</script> 

ответ

0

Вы не можете определить функцию внутри готовой функции JQuery без делать что-то вроде этого

var showHide; 
 
$(function() { // Document ready 
 
    showHide = function(sh) { 
 
    //Insert function code here 
 
    }; 
 
});

Я думаю, что в вашем в случае, если вам лучше определить функцию вне готовой функции, а затем привязать ее к кнопке onclick hand динамически.

Я также добавил атрибут data-showhide к кнопке, чтобы передать переменную в функцию showhide onclick.

function showHide() { 
 
    var shID = $(this).data("showhide"); // Use lower case only in data 
 
    if (document.getElementById(shID + '-show').style.display != 'none') { 
 
    document.getElementById(shID + '-show').style.display = 'none'; 
 
    document.getElementById(shID).style.display = 'block'; 
 
    } else { 
 
    document.getElementById(shID + '-show').style.display = 'inline'; 
 
    document.getElementById(shID).style.display = 'none'; 
 
    } 
 
} 
 

 
$(function() { 
 
    $("#example-show").on("click", showHide); 
 
});
<a href="#" id="example-show" class="showLink" data-showhide="example">

Куки могут быть установлены конкретные значения в функции ПоказатьСкрыть. Готовый обработчик может затем запросить файл cookie и определить, показывать или не показывать div. Эта скрипка показывает это в действии http://jsfiddle.net/e52hxosb/19/

+0

HI wnbates, действительно спасибо за ваш ответ и вашу помощь! Ваш код работает, но я просто не уверен, что способ ввода функции cookie верен или нет. Можете ли вы мне помочь? действительно ценим = D вот моя скрипка: http: //jsfiddle.net/Garfrey/e52hxosb/15/ – kafeng

+0

Чтобы использовать $ .cookie(), вам нужно добавить скрипт плагина jQuery cookie как внешний resouce. Версия cdn можно найти здесь https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js В вашей скрипке вы можете перезаписать функцию showHide с новой функцией внутри готовый обработчик. Вам не нужно перезаписывать showHide, просто используйте оператор if и $ .cookie, чтобы решить, хотите ли вы вызвать showHide. – wnbates

+0

база на ваш комментарий Я вызвал скрипт плагинов jQuery cookie из cdn, внутри моего html-пути. Во-вторых, я удалил перезаписать showHide и настроил функцию cookie. Вот моя скрипка: http: //jsfiddle.net/Garfrey/e52hxosb/16/ .... Правильно ли мой код? = D – kafeng