【问题标题】:using jQuery after someone else's Javascript在别人的 Javascript 之后使用 jQuery
【发布时间】:2010-10-06 09:30:37
【问题描述】:

场景: 我有一个 Javascript 生成的网页,这是别人很久以前写的,我想用 jQuery 来美化它。我的目标是清理其他人生成的 Javascript 生成的 html,这些 html 在生成后仅通过对该 HTML 使用一些 jQuery 调用来生成。

这将比直接修改其他人的 Javascript简单得多,至少目前是这样。

我的第一次尝试是在调用所需 jQuery 代码的 HTML 头部的末尾添加一个脚本标记。

    <script src="/someone-elses-js-generator.js" />
    <script>
    $(document).ready(function() {
        alert('the other stuff ran, now do the jquery cleanup');
        $('.foobar').css("display","none");
        $('.doobar').css("display","inline");
        /// ... so on and so forth ...
    });
    </script>

问题:以上工作正常,但是当我注释掉“警报”消息时。 jquery 不再执行清理。显然,发生的事情是警报消息框延迟了后续清理代码的运行,这很好,但没有警报,jQuery 似乎在其他 javascript 完成输出之前运行。

问题:有没有办法让 jQuery 清理代码在 js 生成器代码之后运行,但不必放置 alert() 框在那里?

【问题讨论】:

  • 不确定是否有帮助,但尝试使用窗口而不是文档。 windows onready 在文档之后调用。

标签: javascript jquery html events dom


【解决方案1】:

也许$(document).ready() 不是正确的方法。

另一个脚本是如何被触发的?如果它在 window.onload 上,那么它可能仅在您的 jQuery 启动后才会启动。

您想等到其他脚本停止运行。可能最好的方法是将你的 jQuery 包装在一个函数中,并在你确定它已经完成时从另一个脚本中调用它。

【讨论】:

    【解决方案2】:

    你可以把

    $(document).ready(function() { ... });
    

    /someone-elses-js-generator.js 的末尾或此文件中操作逻辑的末尾。

    【讨论】:

      【解决方案3】:

      您可以使用以下 JavaScript 函数在一定程度上延迟清理代码:

      setTimeout('JS Cleanup Code', number_of_miliseconds);
      

      【讨论】:

        【解决方案4】:

        您也可以稍后尝试使用 setTimeout() 调用清理代码;

        【讨论】:

          【解决方案5】:

          我认为您可能需要查看为什么其他编码员的代码被延迟。如果它没有立即运行并且没有理由不能运行,您可以将他的功能包装在匿名函数中并立即运行。

          (function() {
              /*
              Other coder's code here
              */
           })(); //run this function and the code inside it immediately.
          

          【讨论】:

            猜你喜欢
            • 2013-05-17
            • 1970-01-01
            • 2010-09-08
            • 1970-01-01
            • 2020-01-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-01-21
            相关资源
            最近更新 更多