看起来

$(html).find('*').index('#theID');


产生-1而

$(html).find('*').each(function(ind){if(this.id=='theID') alert('found! @'+ind) } );


确实有效(更改229)

我正在将Windows 7与IE 8和jquery 1.6.1一起使用

我的问题是,第一个为什么不起作用?谢谢。

最佳答案

查看index的jQuery文档。字符串参数的API如下(增加了斜体):


选择器表示要在其中查找的jQuery集合的选择器
对于一个元素。

...

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


要执行您想做的事情,需要您传递一个元素(或jQuery对象)作为参数,而不是字符串。因此,类似这样的事情应该可以满足您的要求:

$(html).find("*").index($("#theID", html));

编辑(请参阅评论)

由于html是一个字符串,因此从该字符串创建2个不同的jQuery对象将引起问题。为了解决这个问题,您可以将其传递到jQuery中一次:

var $html = $(html);
$html.find("*").index($html.find("#theID"));




index形式的文档规定以下内容:


元素DOM对象或jQuery对象中的第一个元素
寻找。

...

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

10-05 20:20
查看更多