jquery - 为什么在这种情况下我需要 live() ?
我的情况有点奇怪。我理解 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
$('.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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我能想象的唯一会导致这种情况的事情是缺乏 domready 事件。这应该有效:
The only thing I can imagine that would cause this is a lack of a domready event. This should work:
当您的
.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).你有没有放
in $(document).ready(function() {....} ?
即使您包含 .js 文件,如果页面中的元素(' rating li')未加载,也不会进行绑定。
Did you put
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.
如果没有看到更多的代码,很难确定。但我的猜测是您的脚本在页面加载完成之前运行。尝试通过调用
$(document).ready(...) 来包装您的绑定(以及依赖于特定 dom 元素存在的其他任何内容)。
像这样的内容:
如果不是这样,请发布更多代码,我们将进一步深入研究。
祝你好运。
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:
If that's not it, then post more of your code, and we'll dig in further.
good luck.