JS событие .on(“click”) в паре с .filter .attr (оптимизация)

278
15 июля 2017, 08:18

Есть код, который добавляет переменную id в URL браузера при клике на кнопку.

При клике на кнопку, меняется активный айтем. (Всего их 3 с уникальными ID).

Суть в том, что приходится два раза кликнуть на кнопку, чтобы изменился активный айтем и ID в строке браузера.

В следствии этого, происходит всё так, что при клике, активный айтем с ID - 3, а записывается в строку ID предыдущего айтема (т.е. ID - 2). А при первом клике, в строку браузера вообще ничего не записывается.

Пример можно посмотреть и тут.

<button class="button"></button>
<div class="item" data-id="1">item1</div>
<div class="item active" data-id="2">item2</div>
<div class="item" data-id="3">item3</div>
$(".button").on("click", function() {
    var id = $('.item').filter('.active').attr('data-id');
    history.pushState({foo: 'bar'}, 'Title', '/?id=' + id);
});
Answer 1

Я нашел проблему, она заключалась в том, что плагин который я использовал дублировал еще одну секцию с теми же классами и активным айтемом.

READ ALSO
Неправильно переключаются checkbox-ы

Неправильно переключаются checkbox-ы

Есть два чекбоксаОдин сразу отмечен, второй нет

241
форматирование текста (javascript)

форматирование текста (javascript)

здравствуйте, в функцию поступает такой текст:

255
mysql суммирование элементов по дате

mysql суммирование элементов по дате

Здравствуйте! В бд хранится информация о платежах (дата и сумма платежа), например:

260
Оптимизировать MySQL запрос фреймворк Laravel

Оптимизировать MySQL запрос фреймворк Laravel

Доброго времени суток, друзьяПомогите оптимизировать запрос для фильтрации данных

227