jquery - 为什么在这种情况下我需要 live() ?

发布于 2024-09-18 18:17:33 字数 611 浏览 13 评论 0原文

我的情况有点奇怪。我理解 live() 和 bind() 函数的前提,但在我认为我不需要它们的情况下,我似乎需要它们。我会解释一下。

我在 jquery 中做了一个自动建议。我在页面顶部添加了 autosuggest.js。然后我有一个输入字段。

JS 的基础是这样工作的:

$(".autosuggest").keyup(function()
{
}

这可以工作 - 在 keyup 上,我的函数按预期执行等 - 我不需要使用 live() 或 bind() 因为输入字段从一开始就在页面上......

现在。我还制作了一个“星级评价者”式的脚本。 我有各种

  • 元素(已设置样式),悬停时它们会重新设置样式...

     $('. rating li').mouseover(function() {
    }
    

    还不行

     $('. rating li').live('mouseover',function() {
    }
    

    是的。

    为什么在这种情况下我需要使用“live”,而在自动建议的情况下不需要?

    谢谢

  • I have a somewhat odd situation. I understand the premise of the live() and bind() functions, yet in a situation where i believe i dont need them, i seemingly do. I will explain.

    I made an autosuggest in jquery. I included autosuggest.js at the top of my page. I then have an input field.

    The basis of the JS works around:

    $(".autosuggest").keyup(function()
    {
    }
    

    This works - on keyup, my function executes etc as expected - i dont need to use live() or bind() as the input field is on the page from the get go...

    Now.. I have also made a 'star rater' esque script.
    I have various

  • elements (which are styled), and on hover they are restyled...

     $('.rating li').mouseover(function() {
    }
    

    does NOT work, YET

     $('.rating li').live('mouseover',function() {
    }
    

    DOES.

    Why do i need to use 'live' in this situation, when i dont in the case of the autosuggest?

    Thanks

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

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

    发布评论

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

    评论(4

    許願樹丅啲祈禱 2024-09-25 18:17:33

    我能想象的唯一会导致这种情况的事情是缺乏 domready 事件。这应该有效:

    $(function () {
        $('.rating li').mouseover(function() {
        }
    });
    

    The only thing I can imagine that would cause this is a lack of a domready event. This should work:

    $(function () {
        $('.rating li').mouseover(function() {
        }
    });
    
    御守 2024-09-25 18:17:33

    当您的 .mouseover() 不起作用时,. ratings li 尚未被解析。

    您可以将其包装在 $(document).ready(function() {...}); 中或使用 .live() (这会为当前的任何内容创建绑定)在脚本中的该点进行解析以及将来添加的任何元素)。

    the .ratings li isn't parsed yet when you have .mouseover() not working.

    You can wrap it in $(document).ready(function() {...}); or use .live() (which creates the binding for any currently parsed at that point in the script and any elements added in the future).

    淡水深流 2024-09-25 18:17:33

    你有没有放

    $('.rating li').mouseover(function() {
    }
    

    in $(document).ready(function() {....} ?

    即使您包含 .js 文件,如果页面中的元素(' rating li')未加载,也不会进行绑定。

    Did you put

    $('.rating li').mouseover(function() {
    }
    

    in $(document).ready(function() {....} ?

    Even if you include a .js file, if the elements in the page ('rating li') are not loaded, the bind will not be made.

    吃→可爱长大的 2024-09-25 18:17:33

    如果没有看到更多的代码,很难确定。但我的猜测是您的脚本在页面加载完成之前运行。尝试通过调用 $(document).ready(...) 来包装您的绑定(以及依赖于特定 dom 元素存在的其他任何内容)。

    像这样的内容:

    $(document).ready( function() {
        $('.rating li').mouseover(function() {
           // whatever
        });
    
        $(".autosuggest").keyup(function() {
           // whatever else
        });
    });
    

    如果不是这样,请发布更多代码,我们将进一步深入研究。

    祝你好运。

    Without seeing more of you code, it's difficult to say for sure. But my guess would be that your script is running before the pageload completes. try wrapping your bindings (and anything else that depends on particular dom elements to exist) with a call to $(document).ready(...).

    something like this:

    $(document).ready( function() {
        $('.rating li').mouseover(function() {
           // whatever
        });
    
        $(".autosuggest").keyup(function() {
           // whatever else
        });
    });
    

    If that's not it, then post more of your code, and we'll dig in further.

    good luck.

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