jQuery 与 body onload 事件冲突

问题描述 投票:0回答:4

我有一个从 body 调用的函数

onBodyLoad
onload
:

var someGlobalVar = new SpecialType();

function onBodyLoad() {
  someGlobalVar.Bind();
}

当我在项目中包含 jQuery 1.4.2 时,我收到一个错误,指出 someGlobalVar 是 未定义。 为什么 JQuery 会影响全局变量? 关于如何修复它有什么建议吗?

html jquery jquery-events
4个回答
3
投票

除非您需要再使用

<body onload='OnBodyLoad()'>
,否则您可以将其更改为使用 jQuery 的
document.ready
(并将其移动到外部文件!),如下所示:

var someGlobalVar=new SpecialType(); 
$(OnBodyLoad);
//or..
$(function() {
  //other stuff..
  OnBodyLoad();
});
//or...
$(document).ready(function() {
  //other stuff..
  OnBodyLoad();
});

2
投票

为什么不使用 jQuery 的 load 事件?

$(window).load(function() {
      functiontoexecute();
});

很简单,也很容易。


1
投票

只是一个旁注。

// DOM Ready
$(document).ready(function() {});

// When the page has completely loaded
<body onload="someFunction()">

1
投票

也许 jQuery 会干扰

SpecialType
,因此对
new SpecialType();
的调用会导致变量 someGlobalVar 为
undefined

尝试使用控制台检查是否有任何警告,并尝试手动实例化 SpecialType 对象。这应该会给您一些见解。

© www.soinside.com 2019 - 2024. All rights reserved.