jquery $('#my_id')和document.getElementById('my_id')之间的区别?

时间:2011-12-29 11:38:28

标签: javascript jquery

我认为$('#my_id1')与document.getElementById('my_id1')相同。但它显然不是。有什么区别?

(function( $ ) {
  $.fn.simple_hide_function = function() {
  var $t = this;
  $t.hide();
  };
})( jQuery );

$(window).load(function () {
var $div1 = $('#my_id1');
var $div2 = document.getElementById('my_id2');
$div1.simple_hide_function(); // this is working
$div2.simple_hide_function(); // but this is not working
});

添加示例以使其更清晰:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<div id="my_id1" style="height:100px;background:#f00">div1</div>
<div id="my_id2" style="height:100px;background:#f00">div2</div>



<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script>

(function( $ ) {
  $.fn.simple_hide_function = function() {
  var $t = this;
  $t.hide();
  };
})( jQuery );

$(window).load(function () {
var $div1 = $('#my_id1');
var $div2 = document.getElementById('my_id2');
$div1.simple_hide_function();
$div2.simple_hide_function();
});

</script>
</body>
</html>

5 个答案:

答案 0 :(得分:7)

区别在于第一个返回 jquery对象,而第二个返回 DOM元素

但这些陈述等同于

document.getElementById('my_id2') <->  $('#my_id1').get(0)

document.getElementById('my_id2') <->  $('#my_id1')[0]

答案 1 :(得分:4)

第一个返回一个jQuery对象,该div作为唯一的成员。您可以在对象上使用jQuery函数来操作它。

第二个使用浏览器的内置方法返回DOMElement。

答案 2 :(得分:1)

$('#my_id1') // Returns a jQuery object

getElementById('my_id1') // Returns a DOM object.

要获取jQuery对象的DOM对象,可以调用:

$('#my_id1').get()

jQuery可以使用选择器匹配多个对象,因此要获得第二个匹配的DOM元素:

$('#my_id1').get(1) // 1 = item #2 (zero-based index)

要从集合的 END 中获取匹配的DOM元素,您可以使用负数,即要检索的匹配元素末尾的距离,所以-1得到最后一项。

$('#my_id1').get(-1) // gets the last item of the matched elements

答案 3 :(得分:0)

使用my_id1

var $div2 = document.getElementById('my_id1');

答案 4 :(得分:0)

据我所知,浏览器中的渲染有所不同。

好像我们不使用文件。这在IE浏览器中不起作用。

但只适用于其他浏览器。