jQuery 嵌套类选择器

发布于 2024-11-30 13:27:50 字数 1832 浏览 1 评论 0原文

我目前正在尝试解决我正在使用的 jQuery 脚本的一个小但烦人的问题。您可以在此处查看问题和脚本: http://jsfiddle.net/nRD4L/12/

我正在使用此脚本

(function($, undefined) {
$(document).ready(function() {
    var $container = $(".update_content");

    $container.find(".social_media_updates_extended_view").hide();

    $container.delegate(".update_extend .btnFadeIn", "click", function(event) {
        var $view = $(this).closest(".wrapper_update_extend").prev(".social_media_updates_extended_view").stop(true).fadeToggle(200);

        $container.find(".social_media_updates_extended_view").not($view[0]).stop(true).fadeOut(200);
    })
})
})(jQuery);

对于下面的 HTML,脚本工作正常,但是当我进行小的更改(查看下面的 HTML)时,由于 HTML 结构的更改,它不起作用。

<div class="wrapper_update">
<div class="update_content">
    <div class="social_media_updates_extended_view">
        <p>Karel de Bruin</p>
    </div>
    <div class="wrapper_update_extend">
        <div class="update_extend">
            <span class="btnFadeIn">fade button span</span>
        </div>
    </div>
</div>

上面的 HTML 工作正常,但下面的 HTML 不起作用,因为现在 div .wrapper_update_extend 不在 div.update_content 内。

<div class="wrapper_update">
<div class="update_content">
    <div class="social_media_updates_extended_view">
        <p>Karel de Bruin</p>
    </div>
    <p>content</p>
</div>
<div class="wrapper_update_extend">
    <div class="update_extend">
        <span class="btnFadeIn">fade button span</span>
    </div>
</div>

因此,我需要对脚本进行一些更改,以在 .update_content 类中找到 .social_media_updates_extended_view 类。

有人有这方面的建议吗?

I'm currently trying to figure out a small but anoying problem with a jQuery script that I am using. You can see the problem and script here : http://jsfiddle.net/nRD4L/12/

I am using this script

(function($, undefined) {
$(document).ready(function() {
    var $container = $(".update_content");

    $container.find(".social_media_updates_extended_view").hide();

    $container.delegate(".update_extend .btnFadeIn", "click", function(event) {
        var $view = $(this).closest(".wrapper_update_extend").prev(".social_media_updates_extended_view").stop(true).fadeToggle(200);

        $container.find(".social_media_updates_extended_view").not($view[0]).stop(true).fadeOut(200);
    })
})
})(jQuery);

With the HTML below the script works fine but when I make a small change (check out the HTML below) it does not work due to a change in HTML strcuture.

<div class="wrapper_update">
<div class="update_content">
    <div class="social_media_updates_extended_view">
        <p>Karel de Bruin</p>
    </div>
    <div class="wrapper_update_extend">
        <div class="update_extend">
            <span class="btnFadeIn">fade button span</span>
        </div>
    </div>
</div>

The HTML above works fine but the HTML below does not work because now the div .wrapper_update_extend is not within the div.update_content.

<div class="wrapper_update">
<div class="update_content">
    <div class="social_media_updates_extended_view">
        <p>Karel de Bruin</p>
    </div>
    <p>content</p>
</div>
<div class="wrapper_update_extend">
    <div class="update_extend">
        <span class="btnFadeIn">fade button span</span>
    </div>
</div>

So I need to change the script a bit to find the class .social_media_updates_extended_view witihin the class .update_content.

Anyone got a tip for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

银河中√捞星星 2024-12-07 13:27:50

这里是一个工作示例。但是我不确定您为什么要这样改变内容的结构?

Here is a working example. However I'm unsure why you would want to change the structure of your content like that?

岁月流歌 2024-12-07 13:27:50

$container 设置为适当的选择器(如果找不到更好的选择器,则设置为 $('body')

Set the $container to the appropriate selector (or to $('body') if you can't find better one)

潜移默化 2024-12-07 13:27:50

您拥有的代码假设了一些事情:

您想要的所有内容都位于 .update_content 下。

.wrapper_update_extend 前面是 .social_media_updates_extended_view,这就是您要显示的视图。

您可以使用下面的代码来破坏这两件事。我无法从代码中看出你想要的第二件事是什么,所以恐怕我无法指出如何改进它。

The code you have assumes a few things:

everything you want is under .update_content.

.wrapper_update_extend is preceded by a .social_media_updates_extended_view, and that's the one you want to show.

You break both things with the code below. I can't tell from the code what you want with the second thing, so I can't indicate how to improve it I'm afraid.

一曲爱恨情仇 2024-12-07 13:27:50

这是一个工作的 jsfiddle。 http://jsfiddle.net/YsMwj/
我将容器从 更改

var $container = $(".update_content");

var $container = $(".wrapper_update");

然后将 $view 的选择器从 更改

var $view = $(this).closest(".wrapper_update_extend").prev(".social_media_updates_extended_view").stop(true).fadeToggle(200);

var $view = $(this).closest(".wrapper_update_extend").prev(".update_content").children(".social_media_updates_extended_view").stop(true).fadeToggle(200);

Here is a working jsfiddle. http://jsfiddle.net/YsMwj/
I changed the container from

var $container = $(".update_content");

to

var $container = $(".wrapper_update");

Then changed the selector for $view from

var $view = $(this).closest(".wrapper_update_extend").prev(".social_media_updates_extended_view").stop(true).fadeToggle(200);

to

var $view = $(this).closest(".wrapper_update_extend").prev(".update_content").children(".social_media_updates_extended_view").stop(true).fadeToggle(200);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文