1

这是我的代码:

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,这是正确的。这怎么可能?

4

3 回答 3

3

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

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

index接受一个 jQuery 对象或 DOM 元素:

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

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

http://jsfiddle.net/6sDpx/

于 2012-10-04T08:20:45.327 回答
0

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

问题出在其他地方。

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

证据

于 2012-10-04T08:25:32.167 回答
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 ?

于 2012-10-04T08:26:04.383 回答