我有一个jquery函数,它返回一个随机广告的html。
function getAd() {
document.write( '<div>Some randomized ad html</div>' );
}
要插入广告,我在我的html文件中有这个:
<div><script>getAd();</script></div>
然而,这是有效的,我试图用更安全的东西替换document.write()代码,比如append()。所以我试试这个:
function getAd() {
$(this).append( '<div>Some randomized ad html</div>' );
}
然而,$(this)是窗口而不是div。
我也试过这个:
function getAd(elem) {
$(elem).append( '<div>Some randomized ad html</div>' );
}
在html中,我传递了这个:
<div><script>getAd(this);</script>
但是再一次,$(elem)是一个窗口,而不是div。 (在这两种情况下,我得到一个&#34;无法读取属性&#39; createDocumentFragment&#39;未定义&#34;错误。)
我意识到我可以为div分配一个id,然后将id传递给getAd()函数,但我在网站上有数百个这样的调用(有时在同一页面上有几个)我宁愿不这样做每次调用此函数时都必须分配然后传递一个id。
调用函数有没有办法确定调用元素,以便它可以附加html?
谢谢!
答案 0 :(得分:4)
您可以为所有元素添加公共属性(或类):
<div random-ad>
然后,使用$.each()
调用您的函数:
function getAd(elem) {
$(elem).append( '<div>Some randomized ad html</div>' );
}
$(document).ready(function(){
$('[random-ad]').each(function(){
getAd(this);
});
});