使用jQuery追加并调用动态javascript函数

时间:2011-08-10 20:20:24

标签: javascript jquery dynamic

你能创建一个动态的javascript函数并立即调用吗?

我已经发现你不能使用追加回调。

建议,不工作,代码:

<script type="text/javascript">
var count=1;
$(document).ready(function(){
    $(".main").append('
       <script type="text/javascript">function init'+count+'(){alert("'+count+'");}<'+'/script>
    ');
    window['init'+count]();
});
</script>
<div class="main"></div>

编辑:

将其缩小为同步问题。在append和window之间放置alert("")使其工作,但这并不是一个有用的修复,因为当我将此代码放在循环中时,计数可能会达到100。 猜猜我必须继续寻找。

3 个答案:

答案 0 :(得分:0)

这应该有用,但你没有正确引用。 append("")中不应包含任何未转义的双引号。尝试:

$(".main").append("
       <script type=\"text/javascript\">function init'+count+'(){alert(\"'+count+'\");}<'+'/script>"
    );

答案 1 :(得分:0)

使用外部脚本和$.getScript(),它允许您指定回调并使您的代码更整洁

$.getScript("http://scriptURL.com/script.js", function(){ itit(); });

Theres没有内容代码..你可以在你附加标签的同一个地方运行它或使用jQuery.globalEval();

答案 2 :(得分:0)

是的,你可以!这就是javascript的发明方式!它非常强大:

<script type="text/javascript">
var count=1;
var init = [];
$(document).ready(function(){
    (function (count) {
        init[count] = function () {
            alert(count);
        }
    })(count);
    init[count]();
});
</script>
<div class="main"></div>

或者,如果你只想构建并调用函数而不存储它......

<script type="text/javascript">
var count=1;
$(document).ready(function(){
    (function () {
        alert(count);
    })();
});
</script>
<div class="main"></div>