jQuery 中 .prepend 方法的问题

Posted

技术标签:

【中文标题】jQuery 中 .prepend 方法的问题【英文标题】:Problems with .prepend method in jQuery 【发布时间】:2010-02-25 18:26:28 【问题描述】:

我有一个函数可以将 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);

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

【问题讨论】:

.live() 有效!!!唯一的问题(可能是因为 .live() 更改了 .hover 语法)是悬停在 li.contents-rec 上会将边框更改为 1px solid #fff 但当我悬停时不会将其更改回来。 $("div#content-text div#sub-text li.contents-rec").live('hover', function() $(this).css(border:'1px solid #fff'); , function() $(this).css(border:'0px solid #000'); ); 我更新了我的答案。显然live() 想要一个功能而不是两个。 【参考方案1】:

如果您在页面加载时已分配悬停事件后动态插入元素,则可以在这种情况下使用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:''); 
        
);

【讨论】:

.live() 有效!!!唯一的问题(可能是因为 .live() 更改了 .hover 语法)是悬停在 li.contents-rec 上会将边框更改为 1px solid #fff 但当我悬停时不会将其更改回来。 f.y.i - 我不需要发布代码,因为它与上面的 Patrick 完全相同。 对不起。我已经更新了我的答案。我以为live('hover',...) 会接受两个功能。显然不是。 (至少 1.4.2 不能那样工作。)参见上面的代码。【参考方案2】:

你在执行这一行吗……

$("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() 方法。 here

【讨论】:

【参考方案3】:

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

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

JQuery 的 live() 可以提供帮助,但 1.3.x 版本不支持 live() 绑定中的“悬停”。

【讨论】:

我猜正在附加的&lt;li&gt; 标记不可见,因为代码文本未格式化为代码。 f.y.i 我的代码确实预先添加了整个 li 标签...

以上是关于jQuery 中 .prepend 方法的问题的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎么创建一个img标签?

简单脚本不适用于 jQuery 中的 .prepend() 和 .css() 方法

jQuery prepend( ) 方法

jQuery 文档操作之prepend() 和prependTo()方法.

jQuery 添加元素append() prepend() after() before()

添加新内容的四个 jQuery 方法:append,prepend,after,before