2

我有一个函数可以将 li 标签添加到父 div 就好了......但是,在添加之后,我想通过在悬停时更改 css 属性来处理这个添加的列表项,但 jQuery 选择器找不到它(似乎是因为 .hover 函数正在搜索可在页面加载时执行的列表项......并且在页面加载时前置项不存在)。

我的前置代码如下所示:

$("div#content-text div#sub-text").prepend(
"<li id='item1' class='contents-rec'><div class='text'></div></li>");

虽然我的悬停代码(不工作)看起来像这样:

$("div#content-text div#sub-text li.contents-rec").hover(function(){
$(this).css({border:'1px solid #fff'});
}, function(){
$(this).css({border:''});
},0);

任何帮助将不胜感激!!提前致谢

4

3 回答 3

2

如果您在页面加载时已分配悬停事件后动态插入元素,则可以live()在这种情况下使用('hover' 参数需要 jQuery 1.4.1 或更高版本):

$("div#content-text div#sub-text li.contents-rec").live('hover',
    function(event) { 
        if (event.type == 'mouseover') {
            $(this).css({border:'10px solid orange'}); 
        } else {
            $(this).css({border:''}); 
        }
});
于 2010-02-25T18:37:01.810 回答
0

您显示的代码实际上并没有预先添加任何内容,所以我假设您只是为了方便发布而忽略了它。(不过,如果您发布实际的工作代码,我们可以为您提供更好的帮助。)

然后,确保您的悬停代码在前置代码之后运行。如果这没有发生,您将需要以某种方式进行调整。(也许使用 setTimeout(...)。)

JQuery 的 live() 可能会有所帮助,但 1.3.x 版本不支持 live() 绑定中的“悬停”。

于 2010-02-25T18:33:39.680 回答
0

你在执行这条线吗...

$("div#content-text div#sub-text li.contents-rec").hover(function(){ $(this).css({border:'1px solid #fff'}); }, function(){ $(this).css({border:''}); },0);

在这之后...

$("div#content-text div#sub-text").prepend( "");

如果是这样,它应该在那里。

另请查看 live() 方法。 这里

于 2010-02-25T18:31:39.050 回答