通过id和class获取DOM之间有什么不同

时间:2016-03-29 08:30:01

标签: jquery dom

我在使用jQuery(1.8.3)获取DOM时遇到了一个问题。



$(function() {
  //method 1
  var $y = $('.u')['0'],
    $n = $('.u')['1'];
  $y.click(function(e) {
    alert('hello y');
  });
  $n.click(function(e) {
    alert('hello n');
  });

  //method 2
  var $yid = $('#y'),
    $nid = $('#n');
  $yid.click(function(e) {
    alert('hello yid');
  });
  $nid.click(function(e) {
    alert('hello nid');
  });
});

<!-- method 1 -->
<button class="u">yes</button>
<button class="u">no</button>
<br>
<!-- method 2 -->
<button id="y">yesid</button>
<button id="n">noid</button>
&#13;
&#13;
&#13;

code in jsfiddle

我不知道为什么我不能使用&#34;方法1&#34;使点击事件有效,我认为这是我失踪的基础,有人可以给我建议吗?

3 个答案:

答案 0 :(得分:0)

$('.u')[0]返回dom对象而不是jQuery对象。 click()处理程序仅适用于jQuery对象,因此使用 eq() 来获取jQuery对象。

var $y = $('.u').eq(0),
    $n = $('.u').eq(1);

<强> FIDDLE

答案 1 :(得分:0)

使用.u进行选择时,您将获得一个数组dom对象。根据你的代码将它作为jQuery对象,你必须再次选择它像

$($('.u')['0'])
$($('.u')['1'])

<强> Fiddle Demo

答案 2 :(得分:0)

class选择内容将返回与id选择内容不同的项目。

想象一下,按class选择一些东西会返回一个包含该类所有内容的框(数组)。然后想象一下,id选择一些内容只会返回带有id的项目。

如果你按类选择某些东西,那么你仍然可以得到“这个班级的所有doms”的盒子(数组),即使这个班级只有1个dom项目。

在jquery中使用.eq()函数可以为您提供该类的第一项或第n项。

给出html

<div class="myDiv" id="myId"></div>

jquery脚本

$(".myClass").eq(0)

选择与

相同的内容
$("#myId")