Я хотел бы задать вопрос. У меня был этот двухклассный класс, у которого был одинаковый элемент html для каждого (на самом деле в моем проекте так много классного класса). У каждой скважины есть функциональность, чтобы показать и скрыть. Моя проблема в том, что я хочу сохранить состояние hide/show только для каждой скважины div.Im с использованием jquery и jquery cookie. Мне удалось сделать это, но все хорошие div выполняются с помощью jquery cookie. Я знаю его неправильно, и я не знаю, как правильно записать файл jquery cookie, чтобы сохранить состояние только для каждого div. Это то, что я выхожу.
<div class="well dark_turq">
<div class="well-header">
<h5>Charts and Statistics</h5>
<ul>
<li class="collapse_well">
<a href="#" rel="tooltip" title="Minimize">
<i class="icon-minus"></i>
</a>
</li>
</ul>
</div>
<div class="well-content">
<div class="tab-content">
Content 1
</div>
</div>
</div>
<div class="well green">
<div class="well-header">
<h5>Charts and Statistics</h5>
<ul>
<li class="collapse_well">
<a href="#" rel="tooltip" title="Minimize">
<i class="icon-minus"></i>
</a>
</li>
</ul>
</div>
<div class="well-content">
<div class="tab-content">
Content 2
</div>
</div>
</div>
И внизу мой код jquery. Я уже включил jquery cookie.
var showing = $.cookie('wellState') == 'show';
if(showing){
$('.well-content').show();
}
else{
$('.well-content').hide();
}
$('li.collapse_well a').click(function() {
var container = $(this).parents('.well').find('.well-content');
if(container.is(":hidden")) {
container.slideDown(200);
$.cookie('wellState', 'show');
$(this).find('i').removeClass('icon-plus').addClass('icon-minus');
$(this).attr('title','Minimize');
} else {
container.slideUp(200);
$.cookie('wellState','hide');
$(this).find('i').removeClass('icon-minus').addClass('icon-plus');
$(this).attr('title','Maximize');
}
return false;
});
Надеюсь, кто-то может дать какую-то помощь или предложение для этой темы. Это jsfiddle для этого ПРИМЕР
Спасибо Sayonji за ваше предложение.
Важное примечание. Мне нужно дать идентификатор всем классам скважин. Теперь мне удается делать файлы cookie с минимальными значениями для каждого класса div well, используя каждую функцию... внутри этого я звоню в функцию события click..bow это мое решение на jquery..
$(document).ready(function(){
$('li.collapse_well a').each(function(){
$(this).click(function() {
var container = $(this).parents('.well').find('.well-content');
//minimize and maximize well content and declare the cookies inside here
if(container.is(":hidden")) {
container.slideDown(200);
$.cookie($(this).parents('.well').attr('id'), 'show');
$(this).find('i').removeClass('icon-plus').addClass('icon-minus');
$(this).attr('title','Minimize');
} else {
container.slideUp(200);
$.cookie($(this).parents('.well').attr('id'), 'hide');
$(this).find('i').removeClass('icon-minus').addClass('icon-plus');
$(this).attr('title','Maximize');
}
return false;
});
//show everything when page loaded
$(this).parents('.well').children('.well-content').show();
//pass the saved cookies to variable
var state = $.cookie($(this).parents('.well').attr('id'));
//show the well content based on cookies condition
if(state == 'show' || state == null){
$(this).parents('.well').children('.well-content').show();
}
else{
$(this).parents('.well').children('.well-content').hide();
$(this).find('i').removeClass('icon-minus').addClass('icon-plus');
$(this).attr('title','Maximize');
}
});
});
Итак, вы хотите сохранить состояние для каждого div отдельно, что логично. Я могу предложить вам два пути:
1) Каждому div.well присваивается уникальный идентификатор
<div class='well ...' id='wellState_0'>
...
<div class='well ...' id='wellState_1'>
...
И затем вы сохраняете эти идентификаторы в файлах cookie:
$.cookie($(this).parents('.well').attr('id'), 'show')
2) Вы автоматически генерируете идентификаторы с помощью javascript через нумерацию divs:
$.cookie(
'wellState_' +
$('.well').index($(this).parents('.well')[0]),
'show'
)
$('body').load(function() { $('li.collapse_well a').each(function(){ var state = $.cookie($(this).parents('.well').attr('id')); if (state == 'hide') ... else ... }) })