【问题标题】:How to stop a JQuery.load'ed inner scripts如何停止 JQuery.load 的内部脚本
【发布时间】:2014-01-29 00:13:24
【问题描述】:

我正在开发一个带有嵌套页面的动态网页。内页有自己的脚本,可以实时和模块化。

当我想删除其中一个内页时,问题就来了。事实上,HTML 代码已被删除,但内部脚本仍在运行。

是否可以停止脚本?

这是我的解决方案的简要视图:

请注意,在此示例中,ID 都是相同的,但在实际解决方案中,它们由使用 php GET["ID"] 值的唯一 ID 标识。

outerPage.php

<HEAD>
    <script>
    var fRunUpdate = true;
        $(document).ready(function() {

           $("#inner1").load("inner.php");
           $("#inner2").load("inner.php");
           $("#inner3").load("inner.php");

        }
    </script>
</HEAD>
<BODY>
    <div id="inner1"></div>
    <div id="inner2"></div>
    <div id="inner3"></div>
</BODY>

innerPage.php

<HEAD>
    <script>
    var fRunUpdate = true;
        $(document).ready(function() {
           function update(){
               //do something
               $("#contentToUpdate").html("content");
               setTimeout(update,1000);
           }
        }
    </script>
</HEAD>
<BODY>
    <div id="contentToUpdate"></div>
</BODY>

【问题讨论】:

  • 删除内页的代码在哪里?

标签: javascript php jquery


【解决方案1】:

您必须使用 stoptimeoutclear interval 我刚刚读了这个链接并得到它

How to stop a setTimeout loop?

在变量中取函数

foo = setTimeout(function, time);

然后清除它

clearTimeout(foo);

希望对你有帮助

【讨论】:

  • 是的,但是由于 foo 是在内部范围内声明的,我如何在外部页面中访问这个变量?
  • 你可以在javascript中拥有一个全局变量
  • 这是个好主意,但不幸的是不适用于我的情况。我有很多内页,所以我会有很多全局变量,代码会很乱......
  • 所以你需要定制吗?你将不得不进行序列化,你不能一次隐藏 5 个文本框
  • 非常感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2023-04-11
  • 2019-10-14
  • 2016-04-19
  • 2018-03-21
  • 1970-01-01
相关资源
最近更新 更多