在 jQuery 中,如何指定仅在特定区域执行某个功能?

发布于 2024-09-25 08:02:05 字数 876 浏览 3 评论 0原文

我有这个 jQuery 片段:

$(function() {
        $("ul > li").hover(function() {
          $(this).find("ul").stop(true, true).animate({opacity: 'toggle'}, 'fast');
        });
    });

这将打开另一个

    中的每个
      内容,但我只想将此用于 :

EDIT

这是结构,我修改了一下,本来我想将它添加到我的header id 但我认为这样更好:

<ul id="navigation">
    <li>List item 1 
        <ul>
            <li>Sub List Item 1</li>
            <li>Sub List Item 2</li>
            <li>Sub List Item 3</li>
        </ul>
    </li>
    <li>List Item 2</li>
    <li>List Item 3</li>
</ul>

如果问题很愚蠢,请不要吃我,我真的是 jQuery 的新手:)

I have this jQuery snippet:

$(function() {
        $("ul > li").hover(function() {
          $(this).find("ul").stop(true, true).animate({opacity: 'toggle'}, 'fast');
        });
    });

This opens every <ul> what's inside in another <ul>, but I want to make this only for
:

<div id="header"></div>

EDIT

Here is the structure, I modified it a bit, originally I want to add it to my header id but that's better I think:

<ul id="navigation">
    <li>List item 1 
        <ul>
            <li>Sub List Item 1</li>
            <li>Sub List Item 2</li>
            <li>Sub List Item 3</li>
        </ul>
    </li>
    <li>List Item 2</li>
    <li>List Item 3</li>
</ul>

Please don't eat me if the question is stupid I'm really really new in jQuery :)

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

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

发布评论

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

评论(4

听你说爱我 2024-10-02 08:02:05

假设 #navigation div 中只有一个 ul

$('#navigation ul > li').hover( /* rest of jQuery function */ );

上面使用的选择器仅选择作为 ul 直接后代的 li 元素它本身就是 id="navigation" 元素的后代。

您还可以简单地将 id 应用于 ul,例如 id="navList",然后使用:

$('#navList > li').hover( /* rest of jQuery function */ );


Edited following OP's changed question/posted (x)html.

给出以下标记:

<ul id="navigation">
    <li>List item 1 
        <ul>
            <li>Sub List Item 1</li>
            <li>Sub List Item 2</li>
            <li>Sub List Item 3</li>
        </ul>
    </li>
    <li>List Item 2</li>
    <li>List Item 3</li>
</ul>

并假设他希望用户将鼠标悬停在 li 元素上以显示 li 的子 ul

$('#navigation > li').hover(
// selects any li that's a direct descendant of the ul with id="navigation"
    function() {
        $('ul', this).stop(true,true).animate({opacity:'toggle'},fast);
        // looks for 'ul' elements inside the currently-selected 'this' object.
        // have a look at the jQuery api for more information on this approach: http://api.jquery.com/jQuery/
    }
);

请注意我还没有测试您尝试应用的功能,我相信您已经可以使用它了。

Assuming that there's only one ul within the #navigation div:

$('#navigation ul > li').hover( /* rest of jQuery function */ );

The selector used, above, selects only li elements that are direct descendants of a ul that is itself a descendant of an element of id="navigation".

You could, also, simply apply an id to the ul, for example id="navList" and then use:

$('#navList > li').hover( /* rest of jQuery function */ );


Edited following OP's changed question/posted (x)html.

Given the following mark up:

<ul id="navigation">
    <li>List item 1 
        <ul>
            <li>Sub List Item 1</li>
            <li>Sub List Item 2</li>
            <li>Sub List Item 3</li>
        </ul>
    </li>
    <li>List Item 2</li>
    <li>List Item 3</li>
</ul>

And assuming that he wants the user to hover over the li elements to reveal that lis child ul:

$('#navigation > li').hover(
// selects any li that's a direct descendant of the ul with id="navigation"
    function() {
        $('ul', this).stop(true,true).animate({opacity:'toggle'},fast);
        // looks for 'ul' elements inside the currently-selected 'this' object.
        // have a look at the jQuery api for more information on this approach: http://api.jquery.com/jQuery/
    }
);

Please note that I haven't tested the function you're trying to apply, I take it on trust that you've already got it working.

琴流音 2024-10-02 08:02:05

只需更改

$("ul > li")

$("#header ul > li")

即可限制 header div 内的元素。

Just change

$("ul > li")

To

$("#header ul > li")

This is going to limit the elements for the ones inside the header div.

你的他你的她 2024-10-02 08:02:05

David 是正确的,或者将类或 ID 添加到您的

    中并直接定位它:$('ul#ul-id').hover( /* .... */ );

David is correct, or add a class or ID to your <UL> and target it directly: $('ul#ul-id').hover( /* .... */ );

你的呼吸 2024-10-02 08:02:05

BrunoLM 提供了一个很好的答案,只需将 jQuery 选择器更改为 #header ul >李。 jQuery 理解 CSS。

但在 jQuery 中需要了解的一件好事是,您可以提供上下文 用于您的 jQuery 选择器。通常 jQuery 选择器会查找整个 DOM。如果您想缩小范围或让它在其他地方查找,请提供上下文。要在 context 中查找 this,请使用以下形式:

$(this, context)

在您的具体情况下,这将是:

$(function() {
    $("ul > li", "#header").hover(function() {
        $(this).find("ul").stop(true, true).animate({opacity: 'toggle'}, 'fast');
    });
});

现在,上下文通过内部应用 .find(),所以上面的意思是:

$(function() {
    $("#header").find("ul > li").hover(function() {
        $(this).find("ul").stop(true, true).animate({opacity: 'toggle'}, 'fast');
    });
});

上面的两个方法是如果您无法应用 CSS 来解决问题,这非常有用...假设您正在动态创建一个 DOM 元素,并且您想在该元素中使用 jQuery。

BrunoLM provides a good answer, just change the jQuery selector to #header ul > li. jQuery understands CSS.

But a good thing to know about in jQuery is that you can provide a context for your jQuery selector. Normally a jQuery selector looks in the entire DOM. If you want to narrow this or have it look somewhere else provide a context. To look for this in a context use the form:

$(this, context)

In your specific case this would be:

$(function() {
    $("ul > li", "#header").hover(function() {
        $(this).find("ul").stop(true, true).animate({opacity: 'toggle'}, 'fast');
    });
});

Now, the context works by internally applying .find(), so the above is synonymous to:

$(function() {
    $("#header").find("ul > li").hover(function() {
        $(this).find("ul").stop(true, true).animate({opacity: 'toggle'}, 'fast');
    });
});

The above two methods are very useful if you can't apply CSS to the problem... Let's say you're creating a DOM element on the fly, and you want to use jQuery within that element.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文