0

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

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

JS 的基础工作围绕:

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

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

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

  • 元素(样式化),并且在悬停时它们被重新样式化......

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

    还不行

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

    做。

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

    谢谢

  • 4

    4 回答 4

    2

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

    $(function () {
        $('.rating li').mouseover(function() {
        }
    });
    
    于 2010-09-13T15:45:55.757 回答
    1

    当您不工作.ratings li时,尚未解析。.mouseover()

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

    于 2010-09-13T15:44:45.987 回答
    0

    你放了吗

    $('.rating li').mouseover(function() {
    }
    
    在 $(document).ready(function() {....} 中?

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

    于 2010-09-13T15:46:09.777 回答
    0

    如果没有看到更多的代码,很难确定。但我的猜测是您的脚本在页面加载完成之前正在运行。尝试通过调用$(document).ready(...).

    像这样的东西:

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

    如果不是这样,请发布更多代码,我们将进一步挖掘。

    祝你好运。

    于 2010-09-13T15:48:55.070 回答