Javascript 如何提醒当前索引

Javascript 如何提醒当前索引,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,如果单击当前的 1 二, 三, 四, $(“p”)。单击(函数(){ 对于(i=0;i在原始代码中,您将循环的上限设置为: for(i = 0; i < $(this).length; i++) 此语法将数据属性clicked设置为true(不测试值是否为true)。因此,它总是会成功,这就是为什么您总是被带到if语句的true分支,然后总是得到0 要测试该属性,应编写: if($(this).eq(i).data("clicked") === "true") 一个更简单的实现是使用

如果单击当前的

1

二,

三,

四,

$(“p”)。单击(函数(){
对于(i=0;i在原始代码中,您将循环的上限设置为:

for(i = 0; i < $(this).length; i++) 
此语法将数据属性
clicked
设置为
true
(不测试值是否为
true
)。因此,它总是会成功,这就是为什么您总是被带到
if
语句的
true
分支,然后总是得到
0

要测试该属性,应编写:

if($(this).eq(i).data("clicked") === "true")
一个更简单的实现是使用
index()
。有关
index()
的详细信息,请参见。以下是一个完整版本,提醒您是否第一次单击某个元素。禁止循环或使用
eq()
(它在指定索引处获取元素,而不是索引本身)是必需的

$(“p”)。单击(函数(){
//获取当前单击的元素在元素集中的索引位置
var idx=$(此).index(“p”);
//测试以查看元素是否已被单击。
if($(this).data(“单击”)=“true”){
警报(“已单击元素“+idx+”);
}否则{
警报(“您第一次单击元素“+idx+”);
}
//将元素标记为下次单击:
$(此).data(“单击”、“为真”);
});

一,

二,

三,


4

不清楚您到底想做什么,但是
警报($(this).index());
不起作用吗?请也发布您的HTML。我们需要一个我可以使用的,和eq()?为什么它显示1而不是0。@Arman看到了我更新的答案,它生成了一个基于0的结果。你可以使用
for
循环,如果你这样做了,你就根本不需要
eq
。但是,当
index()
解决问题时,你为什么要这样做呢?@Arman,不需要`实际上是用于在提供的索引上选择元素。当您单击`1

`时,它显示1的原因是,`.index()`在其父项的上下文中返回所选项目的索引。如果您想从精确元素列表中获取索引,请将它们包装在单独的元素中。@Scott Marcus谢谢。我想知道我做错了什么。我是否使用eq()对吗?如果是的话,我在代码中犯了什么错误?@Arman不,实际上你没有。事实上,你犯了两个错误。第一个是,
$(这个)
在单击事件的上下文中引用-元素事件被激发到。因此,您尝试在该元素上查找某个索引的元素,即确切的元素。您应该首先获取它的父元素和子元素,或者获取它的同级列表。第二个问题是,您说,您只想获取一个索引。如果要使用索引,请使用
.index()
函数。如果要获取此类索引中的元素,请使用
.eq()
,但首先需要获取元素列表,以便从中获取索引。
if($(this).eq(i).data("clicked") === "true")