【问题标题】:jQuery ignores <script> tags on div reloadjQuery 在 div 重新加载时忽略 <script> 标签
【发布时间】:2013-02-06 07:53:15
【问题描述】:

我正在我的页面中重新加载一个 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,方便您修改。

【问题讨论】:

    标签: jquery reload script-tag


    【解决方案1】:

    您是否只是在单击链接时重新加载页面?我会说你做这样的事情而不是在你的 .

    中放置一个脚本标签

    HTML

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

    脚本

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

    【讨论】:

      【解决方案2】:

      如果你不需要在后端使用你的变量,我最好不要使用 ajax。

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

      您也可以在#foo 单击中执行 text(),因此您不必手动更新计数器。

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

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

      【讨论】:

        【解决方案3】:

        如果你想从通过 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

        【讨论】:

          猜你喜欢
          • 2021-04-10
          • 1970-01-01
          • 1970-01-01
          • 2013-07-17
          • 1970-01-01
          • 1970-01-01
          • 2013-11-05
          • 2017-11-20
          • 1970-01-01
          相关资源
          最近更新 更多