jQuery - класс не меняется на самом деле (он меняется только один раз)

0

Я кодирую простую html-страницу с некоторым jQuery. У меня есть две ссылки, и я хочу изменить их стиль при нажатии. В частности, я хочу сделать клик с рамкой и без нее.

$('.unclicked').click(function (event) {
    $('.clicked').removeClass('clicked').addClass('unclicked');
    $(this).removeClass('unclicked').addClass('clicked');
});

<a href="1.html" class="clicked">1</a>
<a href="2.html" class="unclicked">2</a>

Спасибо за ваши предложения

Этот код работает только один раз, что означает, что когда я нажимаю на новый незарезанный элемент, он не меняет его класс.

  • 0
    Вы пытались добавить обработчик кликов к вновь не кликованному объекту?
Теги:

3 ответа

1
Лучший ответ

http://api.jquery.com/live/

Вы хотите использовать

$( document ).on( 'click', '.unclicked', function() {
//your code here
}); 

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

1

Используйте делегацию для живых событий...

$(document).on('click', '.unclicked', function (event) {
  //....
}
0

Я бы добавил нейтральный класс ко всем ссылкам, к которым вы хотите привязать это поведение. Подобно:

<a href="1.html" class="clickable">1</a>
<a href="2.html" class="clickable">2</a>

Затем используйте функцию toggleClass.

$('.clickable')
// Before any are clicked, set the class to unclicked
.addClass('unclicked')
.on('click', function () {
    // This automatically removes and adds based on what already present.
    $(this).toggleClass('unclicked clicked');
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню