当jQuery index()失败?

时间:2012-10-04 08:14:32

标签: jquery

这是我的代码:

if ($('#fotosingola_6985') instanceof jQuery) {
    console.log($('#fotosingola_6985').attr('id'));
    console.log($('#fotosingola_6985').index(".classObj"));
}

嗯:此代码的输出是:

fotosingola_6985
-1

怎么可能? jQuery规范说如果选择器字符串作为参数传递,则.index()返回一个整数,指示原始元素相对于选择器匹配的元素的位置。如果找不到该元素,.index()将返回-1。

但是找到了元素(是的,它是一个jQuery元素,我创建了控件):实际上它返回了它的id。

周围的HTML:

<div id="exp-gallery-dettaglio-slideshow-overflowed">    
    <a href="javascript:void(0);" class="classObj" id="fotosingola_6529">&nbsp;</a>
    <a href="javascript:void(0);" class="classObj" id="fotosingola_6985">&nbsp;</a>
    <a href="javascript:void(0);" class="classObj" id="fotosingola_6990">&nbsp;</a>
    <a href="javascript:void(0);" class="classObj" id="fotosingola_6998">&nbsp;</a>
    <a href="javascript:void(0);" class="classObj" id="fotosingola_6912">&nbsp;</a>
</div>

真实的奇怪行为:

如果我这样做:

console.log($('.classObj').index('#fotosingola_6985')); 

它返回-1。但是,如果我这样做:

console.log($('.classObj').index($('#fotosingola_6985'))); 

它返回1,这是正确的。怎么可能呢?

3 个答案:

答案 0 :(得分:3)

由于你的元素是兄弟姐妹,你可以编码:

$('#fotosingola_6985').index();

index接受jQuery对象或DOM元素:

  

如果在元素集合上调用.index()并传入DOM元素或jQuery对象,.index()将返回一个整数,指示传递的元素相对于原​​始集合的位置。

var $elem = $('#fotosingola_6985');
$('.classObj').index($elem)

http://jsfiddle.net/6sDpx/

答案 1 :(得分:0)

我复制粘贴您的代码并向我显示1而不是-1

其他地方就是问题。

使用$('#fotosingola_6985').index()

The proof

答案 2 :(得分:0)

您提供的代码很好。

请参阅小提琴:http://jsfiddle.net/sP7TJ/1/

您使用的是哪个版本的jQuery?还请尝试使用:

if ($('#fotosingola_6990') instanceof jQuery) {
    console.log($('#fotosingola_6990').attr('id'));
    console.log($('#fotosingola_6990').index(".classObj"));
}

告诉我你收到了什么。 -1或-2?