jQuery忽略div reload </script>上的<script>标记

时间:2013-02-06 07:53:15

标签: jquery reload script-tag

我正在我的页面中重新加载div以反映用户已更新的变量。使用我现在的方法,变量通过脚本标记写入页面,脚本标记嵌入在正文中,如下所示:

的JavaScript

cat = 1;

$("a#foo").click(function() {
    cat = cat + 1;
});

$("a#bar").click(function() {
    $('#bat').load('./index.html #bat > *');
});

HTML

<a href="#" id="foo">add another cat</a>

<a href="#" id="bar">update count</a>

<div id="bat">
    <script> document.write(cat); </script>
</div>

非常感谢任何想法或建议。这是一个jsfiddle,用于修补你的便利。

3 个答案:

答案 0 :(得分:2)

您是否只是在点击链接时重新加载页面?我会说你做这样的事情,而不是在你的。中添加脚本标签。

HTML

<span id="numberOfCats"></span>

脚本

$("a#bar").click(function() {
    $('#numberOfCats').text(cat)
});

答案 1 :(得分:1)

如果您不需要在后端使用您的变量,那么在没有ajax的情况下我会做得更好。

只需将$('#bat').load('./index.html #bat > *');更改为$('#bat').text(cat);

即可

您也可以在#foo点击中执行text(),这样您就不必手动更新计数器。

小提琴1:http://jsfiddle.net/4eSEC/1/

小提琴2:http://jsfiddle.net/4eSEC/5/

答案 2 :(得分:0)

如果你想从带有HTML的Ajax加载的脚本标签执行js代码 - 你需要使用$ .globalEval

$("a#bar").click(function() {
    $('#bat').load('index.html #bat',function(newhtml){
        // execute included script tags - assumes inline for now
        $('script', newhtml).each(function() {
            $.globalEval($(this).text());
        });

    });
});

取自: <script> not returned in AJAX