你能创建一个动态的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。
猜猜我必须继续寻找。
答案 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>