2

当たり前かもしれませんが、検索してみましたがわかりません。スクリプトを備えたサードパーティのツールを使用しています。スクリプトにはIDがありますが、スクリプト内の関数には名前がありません。私がやりたいのは、onClick関数からそのIDでスクリプトを呼び出すことだけであるjavascriptonclick関数を持っています。

すなわち。スクリプトは

<script id="feed" type="text/javascript">(function(){...}())</script>

このスクリプトをから呼び出す必要があります

$('#searchBox').html("<li onClick=\"$(\"#feed\");\">Click to contact us</li>");

上記のように「feed」スクリプトを呼び出そうとしましたが、うまくいきませんでした。重要な場合は、「フィード」スクリプトはページの本文にあり、#searchBoxはそのページの検索フィールドにある自動提案ボックスです。助けていただければ幸いです!ありがとう!

4

2 に答える 2

2

私はこれを試してみます:

$("#searchbox").html("<li onClick=\"eval($(\"#feed\").html())\">Click to contact us</li>")

#feedのスクリプトがそれ自体で実行され、次のようになっていると仮定します。(function(){...})()

ただし、関数が投稿したとおりに表示される場合は、次のように機能する(function(...){})はずです。

$("#searchbox").html("<li onClick=\"eval($(\"#feed\").html())()\">Click to contact us</li>")
于 2012-06-25T03:07:59.570 に答える
2

名前のない関数を名前の付いた関数に変えてみることができます。ヘッドに新しいスクリプトタグを追加する。

$('<script></scr' + 'ipt>', {
    html: 'function feedback(){' + $('#feed').html() + ' }',
    type: 'text/javascript'
}).appendTo('head');

またはさらに良いことに、を使用してnew Function

var feedback = new Function($('#feed').html());

次に、新しいDOM要素のクリックハンドラーでその関数を使用します。

$('#searchBox').html($('<li></li>',{
    text: 'Click to contact us'
}).click(feedback));

(インラインJavaScriptの使用は嫌いです。)

于 2012-06-25T03:49:54.217 に答える