在别人的Javascript之后使用jQuery

时间:2009-02-09 13:00:10

标签: javascript jquery html events dom

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

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

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

    <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-generator代码之后运行,但无需放置alert()框在那里?

5 个答案:

答案 0 :(得分:5)

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

其他脚本是如何触发的?如果它在window.onload上,那么它可能只在你的jQuery启动后才开始。

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

答案 1 :(得分:1)

你可以把

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

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

答案 2 :(得分:1)

您可以使用以下JavaScript函数延长清理代码:

setTimeout('JS Cleanup Code', number_of_miliseconds);

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

您也可以稍后使用setTimeout();

尝试调用清理代码