看起来
$(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()返回一个整数,指示
传递的元素相对于原始集合的位置。