Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:是否有一种方法可以自动向动态生成的HTML添加属性,就像live()处理事件一样?_Javascript_Jquery_Html - Fatal编程技术网

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"); });