$this.parent().find .removeClass 不会删除类


$this.parent().find .removeClass doesnot remove class

我对以下内容有一些问题

如果我在循环中添加一个额外的列,则不会通过 jquery 脚本删除 ccs 类。 如果我删除它的工作..

<?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');

这是因为parent不足以让你达到需要更改的节点所在的顶级。

也就是说,你只是向上移动到包含tdtr,而不是table

如果没有更多的代码(更多的HTML生成),很难确定。

我最好的猜测是,您实际上需要找到closest表而不是parent表。

例如

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

这个小提琴给你一个例子来说明我的建议......

使用<a class="option-detail"><img src="image"></a>(删除之前a.

因为有了这个:

<a class="a.option-detail" <img src="image"></a>您的类名将被.a.option-detail

并通过关闭>修复您的 HTM

为什么要

在"a.option"上进行单击事件,然后在删除和添加类之前转到父级并再次找到锚点?执行以下操作不是更容易吗:

$(document).on('click', 'a.option, a.option-detail', function() {
    $this = $(this);
    $('.option-active').removeClass('option-active');
    $this.addClass('option-active');
}