我在使用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;
我不知道为什么我不能使用&#34;方法1&#34;使点击事件有效,我认为这是我失踪的基础,有人可以给我建议吗?
答案 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")