如何在jquery或javascript中访问动态加载的元素?

时间:2011-04-02 05:24:04

标签: javascript jquery dom

好的,这就是烦扰我的场景。我需要获取dom中所有元素的列表,甚至是动态加载的元素。

例如,假设使用

创建了一个脚本元素
var script=document.createElement('script');
script.type='text/javascript';
script.src='somejsfile.js';
    $("head").append(script);

如果我这样做:

var doc = document.documentElement;
var scripts = doc.getElementsByTagName("script");
for (var idx in scripts)
{
    var s = scripts[idx];
    if (!s.src) continue;
    s = s.src;
    alert(s);
}

为什么我看不到动态添加的脚本?我在Jquery中尝试了相同的结果。

有谁知道如何实现这一目标?或许还能让人耳目一新?

*只是要清楚:我想要的只是遍历dom并找到'script'元素的'src'属性,甚至是动态加载的元素。

4 个答案:

答案 0 :(得分:3)

你把它添加到dom ......?

var script=document.createElement('script');
script.type='text/javascript';
script.src='somejsfile.js';

$(script).appendTo("head"); //or body

答案 1 :(得分:1)

首先需要以某种方式将动态创建的脚本附加到DOM。这是一个万无一失的方式:

var ref=document.getElementsByTagName('script')[0],
    script=document.createElement('script');
script.type='text/javascript';
script.src='somejsfile.js';
ref.parentNode.insertBefore(script, ref);

答案 2 :(得分:0)

看起来NeXXeuS是正确的。你也可以在没有jQuery的情况下附加你的新元素:

var newNode = document.createElement("script");
newNode.type = "text/javascript";
newNode.src = "somescript.js";
document.body.appendChild(newNode);

尝试在Firefox或Chrome中的JavaScript控制台中运行它,在这种情况下,您会看到新脚本会添加到body标签中。

答案 3 :(得分:0)

你用jquery追加它,为什么不用jQuery寻找呢?

var scripts = $('script')

甚至

var scripts = $('script [src]')