jQuery与body onload事件冲突

时间:2010-05-19 10:09:29

标签: jquery html javascript-events

我的代码中有一个奇怪的冲突。

我有一个从body onload调用的函数:

var someGlobalVar=new SpecialType(); 
function OnBodyLoad()
{
  someGlobalVar.Bind();
}

但是当我在项目中包含jQuery 1.4.2时,我得到一个错误,即someGlobalVar未定义。 为什么现在全局变量未定义,以及有哪些方法可以解决它?

4 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

为什么不使用jQuery的加载事件?

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

这很简单,很容易。

答案 2 :(得分:2)

只是旁注。

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

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

答案 3 :(得分:2)

也许jQuery会干扰SpecialType,因此对new SpecialType();的调用导致变量some​​GlobalVar为undefined

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