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")