我想获取当我点击某个<span>时的索引值;代码是这样写的:
$('.diot span').click(function(){
i = $(this).index(this);
})
我一直理解的是,在这里写的$(this)指的是$('.diot span')这个集合,因此我需要给index()一个this参数,用来表明我点击的在整个集合中的索引值,这样理解对么
还是应该这样写:
i = $(this).index();
哪种对呢
这个我是在学人家的代码,原来是这样写的:
$("#banner li").click(function() {
var i = $(this).text() -1;
}
html结构是这样:
<p id="banner">
<ul>
<li class="on">1</li>
<li>2</li>
<li>3</li>
<li>4</li>
</ul>
</p>
我尝试把var i = $(this).text() -1;
换成i = $(this).index();
,结果除了第一张图片能显示,之后的三张就全部显示不了,换成 i = $(this).index(this);
则会永远都显示第一张
我理解的是var i = $(this).text() -1;
获取的是索引值,所以也可以用index()呀。
但是为什么不行呢
楼主,我觉得你应该是初学者吧
这段代码的意思是找到.diot元素的所有span子元素,给每个子元素添加click事件
所以说function中的$(this)对应的是你点击的那个span,而不是$('.diot span')。
至于你为什么要取得索引,我不是很清楚,盗用上面的回答
Return Values(返回值)
如果不传递任何参数给
.index()
方法,则返回值就是jQuery
对象中第一个元素相对于它同辈元素的位置。如果在一组元素上调用
.index()
,并且参数是一个DOM
元素或jQuery
对象,.index()
返回值就是传入的元素相对于原先集合的位置。如果参数是一个选择器,
.index()
返回值就是原先元素相对于选择器匹配元素的位置。如果找不到匹配的元素,则.index()
返回-1
。摘自文档:http://www.jquery123.com/index/
按你目前贴出来的代码看:
var i = $(this).text() -1;
与var i = $(this).index();
是等价的;而
i = $(this).index(this);
这样写是不对的,返回的永远是0,可以这样写:i = $("#banner li").index(this);
,不过完全没必要。出错的地方应该不是这里,你可以看一下其他地方,或者贴完整的代码。
有一点可能导致出错的是:你的
i
如果是局部变量,不要去掉前面的var
指索引,是指同级元素。
你可以试一下这样写看看,用on绑定事件指定事件出发的元素!这段代码的意思是为banner下的li绑定事件,也会获取它的集合`$("#banner").on('click','li',function() {
}`
html中的li的值 分别是1,2,3,4
js中取$(this).text(),就是取li的值,再-1等于几 就说明当前处于哪个li上
跟你说的$(this).index一点关系都没有
如果只是获取索引那你用i = $(this).index();获取到的i就是索引值
i = $(this).index();i就是点击到的元素在这些span中的位置。index(this)没有这个鬼。