<head> <title>DOM Level 0 Events Example</title> <script type="text/javascript" src="../scripts/jquery-1.2.1.js"></script> <script type="text/javascript"> $(function(){ $('#vstar')[0].onmouseover = function(event) { say('Whee!'); } }); function say(text) { $('#console').append('<div>'+new Date()+' '+text+'</div>'); } </script> </head> <body> <img id="vstar" src="vstar.jpg" onclick="say('Vroom vroom!')"/> <div id="console"></div> </body>
为什么以上代码中 $('#vstar')[0].onmouseover 需要[0],而
$('#console').append不需要[0](即不是
$('#console')[0].append
)
jQuery 选择器返回的是一个符合条件的元素集合,$('#vstar')是一个集合,虽然在这里这个集合中只有一个元素。由于他现在是一个jQuery对象,你可以使用jQuery封装的方法、属性。
当你用下标的形式,如:$('#vstar')[0],就将jQuery对象,也就是一个元素集合转化成了document对象。这个时候,你就只能使用javascript的方法、属性了。
加 0 访问 是 dom 对象,不加 是 jquery对象。
第一种不是jquery的写法,是用js写的(但用了jquery的选择器)。
jquery应该这样写,dom先转化为jquery对象,然后调用事件。
上边的那个是dom对象,下面的是jquery对象,jquery是先获取dom再将其转化成jquery对象,其实和他们两位说的意思一样
jquery 对象 和dom对象