Javascript 使用jquery将函数注册到DOM ready
假设我添加到First.js:Javascript 使用jquery将函数注册到DOM ready,javascript,jquery,Javascript,Jquery,假设我添加到First.js: $(document).ready( function () { dosomething A }); function () { dosomething C }); }); $(document).ready( A = function () { dosomething A }); C = function () { dosomething C }); }); 和Second.js: $(d
$(document).ready(
function () {
dosomething A
});
function () {
dosomething C
});
});
$(document).ready(
A = function () {
dosomething A
});
C = function () {
dosomething C
});
});
和Second.js:
$(document).ready(
function () {
dosomething B
});
});
$(document).ready(
A = function () {
dosomething A
});
});
DOM就绪后是否会执行所有3个函数
我注册时会是什么情况
到First.js:
$(document).ready(
function () {
dosomething A
});
function () {
dosomething C
});
});
$(document).ready(
A = function () {
dosomething A
});
C = function () {
dosomething C
});
});
至Second.js:
$(document).ready(
function () {
dosomething B
});
});
$(document).ready(
A = function () {
dosomething A
});
});
后者将覆盖第一个
短暂性脑缺血发作
后者将覆盖第一个
不可以,您可以为单个事件分配多个函数
我假设你的语法错误是无意的。按照编写它们的方式,不会执行任何代码。是的,可以多次绑定同一事件而不会出现问题 是的,第二个代码将替换第一个代码设置的值。DOM就绪后,是否会执行所有3个函数? 对。每次绑定要在DomReady上执行的内容时,jQuery都会将函数放入一个内部数组中,然后按照与“insert”相同的顺序执行它们 后者将覆盖第一个? 是的,它会,除非你把
var
放在定义之前。JavaScript将把A
放在窗口范围内,因此下一个定义将覆盖第一个定义
function() {
var A = 0; // this will only exist within the function
}
function() {
A = 1; // this will be added to the "global" scope (window).
}
您的第一个示例是无效语法。它将导致javascript解释器抛出异常。您只需将一个函数传递给
$(document).ready(fn)
。一个函数中可以包含多个函数调用,但只能将一个函数传递给.ready()
您的第二个示例也是一个语法错误-一个额外的})代码>。如果删除了它,它将工作并执行该函数
first.js
和second.js
中的第三个示例也是一个语法错误。您不能将任意javascript作为.ready()
的参数。它必须是一个具有正确语法的函数引用
现在,如果您在示例中确实提供了合法语法,您可能一直想问的是,您传递给.ready(fn)
的所有函数都将在文档准备就绪时执行。jQuery保留一个包含所有已传递函数的数组,并在文档准备就绪时执行所有函数。如果使用多个函数多次调用了.ready()
,则.ready()
的jQuery文档不会指定调用顺序,不过可以检查源代码,看看顺序可能是什么。示例代码中有大量语法错误;请复习并改正它.ready
将函数作为其参数。我假设这是伪代码。我认为问题很清楚,即使在提供的例子中有“语法错误”。@David我不同意;阅读代码时,我必须做出假设性的跳跃,当“结果是什么”是一个问题时,这是不合适的。除非你澄清你认为被覆盖的内容,并纠正语法错误,否则没有人能回答你的问题。我投了赞成票,因为我的假设是“不”是“后者将覆盖第一个?”-1那是不对的。后面的代码将用第一个代码替换设置的值。这甚至不是有效的js,所以不会。你对代码做出了一个假设,但这个问题并不清楚。为什么投反对票?如果你不解释你认为错误的地方,那就无法改善答案。