2

我得到了这个 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.2jQuery masonry 。这里有一个现场演示,可以看到这一切(不)工作。基本上它可以工作,但是该类没有从 中删除的事实确实会立即重新打开及其内容。我很困惑为什么它不删除课程。divdiv.expanded

编辑:我刚刚明白,当文档加载时,类就在那里。它是在点击图片之后添加的,因此我认为我的删除问题来自于此。对不起,误导性的解释。

4

4 回答 4

2

.box您在元素上有一个点击处理程序。

在它里面你有一个.cunload元素上的点击处理程序。

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

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

$('.cunload').click(function(e){
            e.stopPropagation();
            restoreBoxes();
            $(this).parents(".box").removeClass("expanded");
});
于 2011-10-20T23:37:23.073 回答
0

也许这会起作用:

$(this).parents(".box").filter(".expanded").removeClass("expanded");
于 2011-10-20T23:36:29.020 回答
0

如果我使用此代码:

$(".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".

于 2011-10-20T23:40:12.870 回答
0

我认为它有效,但是您的脚本在单击关闭按钮后再次扩展了男孩。您应该将关闭事件处理函数的标题更改为:

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

这样相同的点击事件就不会冒泡文档层次结构。

于 2011-10-20T23:41:33.920 回答