这是我的代码:
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"> </a>
<a href="javascript:void(0);" class="classObj" id="fotosingola_6985"> </a>
<a href="javascript:void(0);" class="classObj" id="fotosingola_6990"> </a>
<a href="javascript:void(0);" class="classObj" id="fotosingola_6998"> </a>
<a href="javascript:void(0);" class="classObj" id="fotosingola_6912"> </a>
</div>
真实的奇怪行为:
如果我这样做:
console.log($('.classObj').index('#fotosingola_6985'));
它返回-1。但是,如果我这样做:
console.log($('.classObj').index($('#fotosingola_6985')));
它返回1,这是正确的。怎么可能呢?
答案 0 :(得分:3)
由于你的元素是兄弟姐妹,你可以编码:
$('#fotosingola_6985').index();
index
接受jQuery对象或DOM元素:
如果在元素集合上调用.index()并传入DOM元素或jQuery对象,.index()将返回一个整数,指示传递的元素相对于原始集合的位置。
var $elem = $('#fotosingola_6985');
$('.classObj').index($elem)
答案 1 :(得分:0)
答案 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?