HTML5 хранилище для ul list?
У меня проблемы с выяснением, как использовать хранилище сеансов для элементов списка. Кажется, это не работает, и из-за стиля я не могу использовать базовую опцию select/:
<div class="btn-group">
<button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"><span data-bind="label">Day</span><span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu" name="country">
<li><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
</ul>
var item = window.localStorage.getItem('country');
$('ul[name=country]').val(item);
$('ul[name=country]').change(function() {
window.localStorage.setItem('country', $(this).val());
});
2 ответа
Вы пытаетесь использовать val
в ul
тег, и он не имеет value
имущество.
Кроме того, вы пытаетесь использовать change
событие на нем, и у него тоже нет этого события.
Во-первых, вы должны понимать, что вы там делаете. Вы, вероятно, скопировали этот Dropdown Picker из любого другого места, и вы не понимаете, что он делает.
Это имитирует select
поведение с помощью label
внутри button
и в любое время li
внутри ul
тэг, ваш код меняет label
текст к li
один.
Итак, во-первых, когда ваша страница загружена, вы должны увидеть, есть ли что-нибудь уже в вашем localStorage, и если это так, вы должны изменить текст метки на значение, сохраненное в localStorage.
var item = localStorage.getItem('country');
if (item) $('span[data-bind="label"]').text(item);
После этого внутри вашего li
событие клика, вы должны сохранить li
текст в localStorage для постоянных целей позже.
// Dropdown picker
$('.dropdown-menu').on('click', 'li', function(e) {
var $target = $(e.currentTarget);
/* the rest of your code */
localStorage.setItem('country', $target.text());
});
Я обновил вашу скрипку с работающим кодом.
Это основной click()
событие. Вы не должны использовать change()
:
$('ul[name=country] li').click(function() {
window.localStorage.setItem('country', $(this).text());
});
Проверьте в консоли, используя localStorage.getItem("country")
,
Скрипка: https://jsfiddle.net/5z0nkdjb/