我得到了这个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");一切都很好。我正在使用jQuery 1.6.2和jQuery 在wordpress站点上。这里有一个实时的,可以看到所有的(不工作)都在工作。基本上,它可以工作,但类没有从div中删除这一事实确实会立即重新打开div及其内容。对于为什么不删除.expanded类,我感到很困惑。
编辑:我刚刚了解到,在加载文档时,类还在那里。它是添加后,点击一张图片,因此我认为我的删除问题来自这个。很抱歉你的解释有误。
发布于 2011-10-20 23:37:23
.box元素上有一个单击处理程序。
在它内部,.cunload元素有一个单击处理程序。
由于.cunload是嵌套在.box中的,所以当您按close按钮时,两个元素都会收到单击事件,所以它会重新打开。(由于DOM层次结构中出现的事件)
将.cunload处理程序更改为
$('.cunload').click(function(e){
e.stopPropagation();
restoreBoxes();
$(this).parents(".box").removeClass("expanded");
});发布于 2011-10-20 23:36:29
也许这会奏效:
$(this).parents(".box").filter(".expanded").removeClass("expanded");发布于 2011-10-20 23:40:12
如果我使用这个代码:
$(".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>然后,它似乎完全按照设计工作,您可以在这里看到它的工作:http://jsfiddle.net/jfriend00/Djjuz/。单击“关闭”链接,查看删除trx类时背景色是否会发生变化。
因此,您的代码中肯定有一些您没有披露的东西,使其无法工作。请包括您用来触发函数的确切代码,也许可以更好地解释您正在尝试做什么,以及您观察到发生了什么或没有发生什么。
如果您希望我们使用到工作页面的链接,请描述相关代码在哪里(该页面中有大量JS文件),并描述您单击的内容以及预期的结果。到目前为止,您只告诉我们一些东西不起作用,但是没有给我们足够的上下文来确定什么东西不工作,您使用什么代码触发它,以及我们如何可能复制问题或者自己看到问题。如果你想要高质量的帮助,你必须给我们足够的信息来帮助你自己。
另外,您是否意识到当您传递选择器.parents("selector")方法时,它只将操作限制在与该选择器匹配的父级上?因此,.parents(".box")只对具有class"box"的父对象进行操作。
https://stackoverflow.com/questions/7843472
复制相似问题