Jquery .parents().removeClass()不工作

Jquery .parents().removeClass()不工作,jquery,removeclass,jquery-masonry,parents,Jquery,Removeclass,Jquery Masonry,Parents,我得到了这个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"

我得到了这个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>

一切正常。我正在一个wordpress网站上使用jQuery 1.6.2jQuery砌体。这是一个活生生的机会,可以看到一切(不)都在运转。基本上它是有效的,但是类没有从
div
中删除的事实会立即重新打开
div及其内容。我很困惑为什么它不删除
.expanded

编辑:我刚刚了解到,在加载文档时,类仍然存在。它是在点击图片后添加的,因此我认为我的删除问题来自于此。很抱歉给你的解释带来了误导。

也许这会奏效:

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

.box
元素上有一个单击处理程序

它里面有一个点击处理程序,位于
.cunload
元素上

由于
.cunload
嵌套在
.box
中,当您按下
关闭
按钮时,这两个元素都会收到单击事件,因此它会重新打开。。(由于DOM层次结构中出现的事件)

.cunload
处理程序更改为

$('.cunload').click(function(e){
            e.stopPropagation();
            restoreBoxes();
            $(this).parents(".box").removeClass("expanded");
});
如果我使用此代码:

$(".cunload").click(function() {
    $(this).parents(".box").removeClass("trx");
});
使用此HTML:

<div class="box trx">
<div class="expandable">
    <span class="simple">
        <a class="cunload" href="#">Close</a>
    </span>
</div>
</div>

然后,它似乎完全按照设计工作,您可以在这里看到它的工作:。单击close链接,查看删除
trx
类时背景颜色的变化

所以,在你的代码中一定有一些你没有透露的东西使它无法工作。请包括您用来触发函数的确切代码,也许可以更好地解释您正在尝试做什么,以及您观察到发生了什么或没有发生什么

如果您希望我们使用指向工作页面的链接,请描述相关代码的位置(该页面中有许多JS文件),并描述您单击的内容以及您期望的结果。到目前为止,您只告诉我们有些东西不起作用,但没有给我们足够的上下文,让我们弄清楚什么东西不起作用,您正在使用什么代码触发它,以及我们如何可能重现问题或自己看到问题。如果你想得到高质量的帮助,你必须通过给我们足够的信息来帮助自己


另外,您是否意识到,当您传递选择器
.parents(“选择器”)
方法时,它将操作仅限于与该选择器匹配的父级?因此,
.parents(“.box”)
将只对具有
类“box”

的父对象进行操作,我认为这是可行的,但您的脚本在单击“关闭”按钮后再次展开该男孩。您应该将关闭事件处理程序函数的标题更改为:

function(event) {
    event.stopPropagation();
    [...]

这样,同一个单击事件就不会在文档层次结构中出现气泡

$(this).parents(“.box”)
表达式是否真的返回了您认为它会返回的元素?我没有在您的实时演示@GusDe Coool上看到类
展开的
;页面加载时不是这样,是的。但每当我点击其中一个bloc时,它就会出现。什么元素有“expanded”类?这不会显示在HTML中,也不会在帖子中描述。如果我们不知道它在哪里,我们就不能帮你移除它!可能是Na的重复,只是尝试了一下,它没有删除“扩展”类。我已经按照我第一篇文章中的解释做了。我可以删除“trx”类。但是正如Gus所说,我要找的类在页面加载中不存在,它是在点击图片后添加的。可能来自那里。所以,你在问为什么你不能删除一个不存在的类?如果你不想解释这个问题,那我就去帮助别人。从你的第一篇文章中我不明白问题是什么。什么元素有
class=“expanded”
?你的HTML中没有显示这个类。是的,我后来才意识到我的错误,对不起,我不是js方面的专家。我应该用“如何删除domready上不存在的类”来更改我的解释。@jfriend00,当您单击缩略图时,
.expanded
将动态添加到哪个对象?如果要删除DOM就绪后添加的类,则需要在添加类后的某个时间调用函数。最有可能的方法是在任何事件发生时调用它来增加类。非常感谢Gaby,它工作得很好!我不知道嵌套的事实。我想我在“冒泡阶段”上得到了它:“为该阶段注册的事件侦听器必须在事件达到其目标后处理该事件。”感谢链接。嘿,Floyd,非常接近,但Gaby答对了。无论如何,谢谢你的帮助!
<div class="box trx">
<div class="expandable">
    <span class="simple">
        <a class="cunload" href="#">Close</a>
    </span>
</div>
</div>
function(event) {
    event.stopPropagation();
    [...]