Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryindexof函数?_Javascript_Jquery - Fatal编程技术网

Javascript jqueryindexof函数?

Javascript jqueryindexof函数?,javascript,jquery,Javascript,Jquery,我试图获取jQuery集中元素的位置 我希望能够做到以下几点: $('ul').find('a').indexOf('.active'); var index = -1; $('ul a').each(function(i){ if ($(this).hasClass('active')){ index = i; return false; } }); alert(index); 并获取.active在a集合中的位置 jQuery是否有类似

我试图获取jQuery集中元素的位置

我希望能够做到以下几点:

$('ul').find('a').indexOf('.active');
var index = -1;
$('ul a').each(function(i){
    if ($(this).hasClass('active')){
        index = i;
        return false;
    }
});

alert(index);
并获取
.active
a
集合中的位置


jQuery是否有类似于
indexOf()
的函数?
index()
方法不起作用

您只需在以下列表中请求即可:

然而,你得到位置是什么意思?你是说位置吗?还是URL

如果您想知道您选择了哪一个
,请点击
,让我们说。。您可以在事件函数中使用
$(this)
。下面是一个示例,如果有多个
.active
类,则返回您单击的元素的当前位置:

要获得该职位:

 $('ul a.active').click(function(){
     alert( $(this).position() );
 })
要获取URL位置,请执行以下操作:

 $('ul a.active').click(function(){
     alert( $(this).attr('href') );
 })
如果将jQuery集(
$searchFor
)作为参数传递给另一个jQuery集(
$searchIn
)的
索引
方法,即

它将返回集合
$searchIn
中的
$searchFor
索引

在您的示例中:

$('ul a').index($('ul a.active'));

您只需要为
index
函数提供一个jQuery对象:

var elements = $('ul a'); 
var index = elements.index(elements.filter('.active')); // 2

alert(index);


没有现成的功能,可以像这样轻松完成:

$('ul').find('a').indexOf('.active');
var index = -1;
$('ul a').each(function(i){
    if ($(this).hasClass('active')){
        index = i;
        return false;
    }
});

alert(index);

你的逻辑是正确的,你只是抓住了错误的元素:


a
链接没有
index()
值,因为它没有同级;您必须抓住
li

注意:
$('ul a')
相当于
$('ul')。查找('a')
@Alp。因为它不需要查询DOM两次。@gdoron,是的,这是我的原始版本,但我进行了编辑以简化——如果性能从来都不是问题,而且更难阅读(oneliners ftw),那么重复所有相同的jQuery性能技巧就没有意义了。性能始终是一个问题,无论是否在问题中指定,它都是一个问题@格多龙:“过早的优化是万恶之源”--唐纳德·克努特。此外,如果它不是瓶颈,则差异为0,如果它使读取难度增加1%,则通常不值得进行这种微优化,即使是这样。@gdoron输出预计为2(这是第三个
a
元素)@tobyodavies@“我知道格多龙,30分钟前就用这个函数发布了一个答案。”托比奥戴维斯。真奇怪。。。我肯定我看过了,但没看到???位置指的是索引,您无法获取url或元素(通常),更不用说相对于jQuery集的url或元素了。而且OP清楚地知道如何使用find,所以
$('ul a.active')
显然不像OP所要求的那样。他不是要
索引
他要的是
索引of
,上次我检查时,它们是不同的。“index”和“indexOf”有何不同?我想不出有哪种语言可以在同一对象类型上实现这两种功能,而且在不同的语言之间它们是同义的。OP使用“indexOf”而不是“index”,因为这是JS中数组和字符串的内置方法的名称。另外,因为他在寻找“indexOf”,意思是他在寻找索引,而不是URL,也不是位置坐标,这就是我的观点。恐怕我不知道你的观点是什么?使用(实际上是同义的)方法的名称来暗示一个简单英语句子的意义上的矛盾对我来说没有多大意义……为什么
jQuery
集合上的
indexOf
应该返回URL?或者它在px中的位置???我和托比奥戴维斯在一起!我希望能够抓取集合中
a
的索引
var index = $('ul a.active').closest('li').index();