Javascript jQuery:是否有一种方法可以自动向动态生成的HTML添加属性,就像live()处理事件一样?
我的清单如下:Javascript jQuery:是否有一种方法可以自动向动态生成的HTML添加属性,就像live()处理事件一样?,javascript,jquery,html,Javascript,Jquery,Html,我的清单如下: <ul id="links"> <li><a href="/example-url-1">Link 1</a></li> <li><a href="/example-url-2">Link 2</a></li> <li><a href="/example-url-3">Link 3</a></li> &
<ul id="links">
<li><a href="/example-url-1">Link 1</a></li>
<li><a href="/example-url-2">Link 2</a></li>
<li><a href="/example-url-3">Link 3</a></li>
</ul>
问题是,新链接也使用jQuery动态地附加到此列表客户端;当它们是时,它们显然缺少target
属性,因此我最终得到了这样的结果:
<ul id="links">
<li><a href="/example-url-1" target="_top">Link 1</a></li>
<li><a href="/example-url-2" target="_top">Link 2</a></li>
<li><a href="/example-url-3" target="_top">Link 3</a></li>
<li><a href="/example-url-4">Link 4</a></li>
</ul>
我无法更改添加链接以包含属性的jQuery脚本,因此我的问题是:我知道我可以使用
live()
为动态生成的元素自动设置事件处理程序,但是有没有一种方法可以自动向添加的新元素添加属性?我认为没有任何方法可以满足您的要求。但您可以使用live完成同样的任务:
$('#links a').live("click", function(e) {
$(this).attr('target', '_top');
});
如果你不反对插件,你可以看看它,它将实现你想要的 下面是一个例子:
$("#links a").livequery(function () {
$(this).prop("target", "_top");
});
这是一个糟糕的解决方案:
$("#links a").live("mouseover", function() { $(this).attr("target","_top"); });
如果不将鼠标移到它上面,就不能单击它,目标属性是在需要它之前设置的。您可能需要查看jQuery的特殊事件系统。它允许您创建自定义特殊事件,在满足某些条件时触发这些事件 下面是另一个带有“onContentChange”事件的SO线程: 下面是另一篇关于jQuery定制特殊事件的文章:
我确实想过要这样做;出于某种原因,我脑子里想它不会工作,因为在指定属性之前,点击就已经发生了,这完全是胡说八道。。。我想今天该回家了!
$("#links a").live("mouseover", function() { $(this).attr("target","_top"); });