test.onclick=run()//这个是在test对象绑定click事件时就立即执行run函数,然后把函数的运行结果赋值给click事件,这显然是错误的
test.onclick=run//这是把run函数本身(函数也是对象)赋值给test对象的click事件,然后在click事件发生时才执行run函数,所以这是正确的
从这个意义上来说,你所谓的 window.onload=run()本意是要等window对象加载完毕后再执行run函数,但是这样写的话,run函数会立即执行(在window对象还未加载完毕就执行),多数情况下这样做是不会出什么错的(除非在run函数内要调用页面上尚未加载的DOM元素时才会出错),表面上看起来也跟window的load事件触发了没什么两样,但事实上它已经脱离了你的本意,所以也是错误的!
而 window.onload=run这个才是对的,至于你说它未执行,估计你是搞错了,在run内部加个控制台的输出或者跟踪一下你就知道它究竟有没有执行了。
楼下说得太简单了,估计提问者看不懂。
假设,你有以下DOM
<div id="dvTest"><div>在这下面加一个按钮</div>
</div>
然后你添加一个按钮,方法如下
function addButton(){var $container = $("#dvTest")
$container.append("<a href='javascript:'>click me</a>")
}
然后,给刚加的按钮一个click事件
//你要先找到你加的这个按钮$("#dvTest > a").click(function(){ alert('you clicked me') })
//或
$("#dvTest > a").unbind().on('click'), function(){ alert('you clicked me') })
我觉得你主要是jQuery的筛选器用得不够熟。你可以搜一下,大概看看。只要能找到控件,绑定事件都不叫事儿。