2016-05-17 15 views
2

ランダム化された広告のhtmlを返すjquery関数があります。しかし、私はのように、より安全なものにするdocument.write()のコードを交換しようとしている、javascript関数の呼び出し側divの決定

<div><script>getAd();</script></div> 

これは動作します:広告を挿入するには

function getAd() { 
    document.write('<div>Some randomized ad html</div>'); 
} 

は、私は私のhtmlファイルでこれを持っていますappend()。ですから、私はこれを試しています:

function getAd() { 
    $(this).append('<div>Some randomized ad html</div>'); 
} 

しかし、$(これ)はウィンドウであり、divではありません。

また、私はこの試みた:

function getAd(elem) { 
    $(elem).append('<div>Some randomized ad html</div>'); 
} 

とHTMLで、私はこれを渡す:

<div><script>getAd(this);</script> 

をしかし、再び、$(ELEM)は、ウィンドウではなく、div要素です。 (どちらの場合でも、「未定義のcreateDocumentFragmentプロパティを読み取れません」というエラーが発生します。)

divにidを代入してからidをgetAd私はこれらの呼び出しをウェブサイト(そして時には同じページにいくつかあります)に持っています。私はこの関数を呼び出すたびにIDを割り当ててから渡す必要はありません。

呼び出し元の関数が呼び出し要素を判断してhtmlを追加できるようにする方法はありますか?

ありがとうございます!

答えて

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); 
    }); 
}); 
+1

や 'データランダム広告。 – nnnnnn

+0

ブリリアント。ありがとう。 –

関連する問題