【问题标题】:window.onload in jQueryjQuery 中的 window.onload
【发布时间】:2012-02-01 12:25:57
【问题描述】:

我已经使用了 sizzle 的示例,并且我在最后的代码中得到了 window.onload。

这是什么意思。

我的代码是这样的:

var init = function () {
    var trail = Sizzle;
    var foo = trail('.foo');
    foo[0].onmouseover = function () {
        this.style.backgroundColor = (this.style.backgroundColor.indexOf('blue') === 0) ? 'yellow' : 'blue';
    };
    foo[1].onmouseover = function () {
        this.style.backgroundColor = (this.style.backgroundColor.indexOf('red') === 0) ? 'yellow' : 'red';
        jQuery(foo[1]).after("<b>Hello</b>");
    }
    foo[2].onmouseover = function () {
        this.style.backgroundColor = (this.style.backgroundColor.indexOf('green') === 0) ? 'yellow' : 'green';
        jQuery(foo[3]).toggle("slow");
        jQuery('b').remove();
    }
};
window.onload = init;

这是什么意思?

【问题讨论】:

  • 函数 init() 仅在窗口(页面)加载完成后才开始工作。

标签: jquery


【解决方案1】:

表示您正在设置init 函数来处理文档的onload 事件。 init函数会在页面所有内容加载完毕后调用。

当您使用 jQuery 时,您应该改用 jQuery 事件。 DOM 事件只能有一个处理程序(除非您编写代码来链接处理程序),但 jQuery 事件可以有多个处理程序:

$(document).load(init);

如果页面中有多个脚本使用onload 事件,则一个将替换另一个。即使您使用 jQuery 事件,连接 DOM 事件的脚本也会接管 jQuery 事件处理程序,例如 this question。在所有脚本中使用 jQuery 事件可以解决这个问题。

【讨论】:

  • 为什么投反对票?如果你不解释你认为答案有什么问题,它就无法改进。
  • window.onload ≠ document.onload。 OP 想知道 window.onload() 做了什么,你告诉他使用 document.onload。为什么?
  • 疯狂的是,你已经知道了! stackoverflow.com/questions/3698200/…
  • 注意 'load' 事件在 jQuery 3.0 中被移除了
【解决方案2】:

这意味着在加载窗口时,function init 将被执行。

【讨论】:

    猜你喜欢
    • 2012-06-02
    • 2014-03-11
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 2012-02-08
    • 2011-01-17
    相关资源
    最近更新 更多