Селекторы, которые вы используете для привязки события с помощью click()
, используются для выбора элементов, к которым нужно добавить обработчик события.Селектор не учитывается при запуске обработчика.
Вы должны искать что-то похожее на это:
$('li').click(function(event) {
event.preventDefault();
if ($(this).hasClass('off')) {
$(".on").addClass("off").removeClass("on");
$(this).addClass("on").removeClass("off");
} else { // $(this).hasClass('on');
$(this).addClass("off").removeClass("on");
}
});
Возможно, вы захотите сделать селектор li
более явным, добавив класс / идентификатор к ul
или li
s.
Чтобы еще больше запутать вещи, вы также можете сделать это (если вы используете jQuery> 1.7);
$(document).on('click', '.off', function(event) {
event.preventDefault();
$(".on").addClass("off").removeClass("on");
$(this).addClass("on").removeClass("off");
});
$(document).on('click', '.on', function(event) {
event.preventDefault();
$(this).addClass("off").removeClass("on");
});
Это потому, что функция .on()
работаетприсоединяя обработчик события к выбранным элементам (document
), и будет выполнять обработчик (функцию) только для указанного события (click
), если элемент, из которого произошло событие, соответствует селектору .off
во время события, а не во время привязки .