我得到了这个JavaScript,试图删除父元素上的类:

$(this).parents(".box").removeClass("expanded");


在这个html上:

<div class="box trx">
<a href="javascript:;" class="open-content"><?php the_post_thumbnail('thumbnail'); ?></a>
<div class="expandable">
    <?php the_content(); ?>
    <span class="simple">
        <a class="cunload" href="javascript:;">Close</a>
    </span>
</div>
</div>


不幸的是,这到目前为止还行不通。我已经完成了一些测试,例如:

$(this).parents(".box").removeClass("trx");




$(this).parents(".box").addClass("exd");


一切正常。我在wordpress网站上使用jQuery 1.6.2和jQuery石工。有一个实时的demo here可以看到全部(没有)工作。基本上可以,但是没有从div中删除​​该类的事实确实会立即重新打开div及其内容。对于为什么不删除.expanded类,我非常困惑。

编辑:我只是知道当文档被加载时该类还在那里。然后单击图片将其添加,因此我认为我的解决问题来自此。抱歉为您提供了错误的解释。

最佳答案

您在.box元素上具有单击处理程序。

在其中,您可以在.cunload元素上单击处理程序。

由于.cunload嵌套在.box中,因此当您按下close按钮时,两个元素都会收到click事件,因此它会重新打开。(由于事件冒泡了DOM层次结构)

将您的.cunload处理程序更改为

$('.cunload').click(function(e){
            e.stopPropagation();
            restoreBoxes();
            $(this).parents(".box").removeClass("expanded");
});

09-16 21:50