$ this.parent (). find .removeClass не удаляет класс

У меня есть некоторые проблемы со следующим

если я добавлю дополнительный столбец в цикл, класс ccs не будет удален через скрипт jquery. Если я удаляю это работает ..

<?php foreach ($option['option_value'] as $option_value) { ?>
<td>
<a class="option-detail"> <img src="image"></a>
</td>
<?php } ?>

Что я делаю неправильно ?

Часть кода JQuery

$(document).ready(function(){
$("a.option, a.option-detail").click(function(event){
$this = $(this);
$this.parent().find('a.option, a.option-detail').removeClass('option-active');
$this.addClass('option-active');

0

Решение

Это потому что parent недостаточно для того, чтобы вы оказались на верхнем уровне, на котором существуют узлы, которые вам нужно изменить.

И.Е. что вы просто двигаетесь к tr который содержит tdи не table?

Без немного большего количества кода (больше поколения HTML) трудно быть уверенным.

Мое лучшее предположение, что вам действительно нужно найти closest стол вместо parent,

Например.

$this.closest( 'table' ).find('a.option, a.option-detail').removeClass( 'option-active' );

Эта скрипка дает вам пример того, что я предлагаю …

1

Другие решения

использование <a class="option-detail"><img src="image"></a> (Удалить a. до)

потому что с этим:

<a class="a.option-detail" <img src="image"></a> Ваше имя класса будет .a.option-detail

и исправить свой HTM с закрытием >

1

Почему вы берете событие click для «a.option», а затем отправляетесь к родителю и снова находите привязку, прежде чем удалить и добавить класс? Не было бы проще сделать следующее:

$(document).on('click', 'a.option, a.option-detail', function() {
$this = $(this);
$('.option-active').removeClass('option-active');
$this.addClass('option-active');
}
1
По вопросам рекламы [email protected]