Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 jQuery使用$.on事件处理程序获取已单击元素的索引_Javascript_Jquery - Fatal编程技术网

Javascript jQuery使用$.on事件处理程序获取已单击元素的索引

Javascript jQuery使用$.on事件处理程序获取已单击元素的索引,javascript,jquery,Javascript,Jquery,我已经看到了使用以下代码获取单击元素索引的方法: $('.element').mouseup(function() { var index = $(this).index(); }); 但是,由于动态生成元素的方式,我必须附加事件处理程序,如下所示: $(document).on("mouseup", ".element", function(){ //Do things }); 由于$(此)将简单地返回文档,因此如何查找触发事件的元素的索引?一种方法是获取父元素,通过以下方式

我已经看到了使用以下代码获取单击元素索引的方法:

$('.element').mouseup(function() {
  var index = $(this).index();
});
但是,由于动态生成元素的方式,我必须附加事件处理程序,如下所示:

$(document).on("mouseup", ".element", function(){
    //Do things 
});

由于
$(此)
将简单地返回文档,因此如何查找触发事件的元素的索引?

一种方法是获取父元素,通过以下方式选择子元素:

let index = $(this).parent().children();
let index = $(this).parent().children();
然后,使用此命令获取索引:

index.index(this);
index.index(this);
总而言之,虽然我不知道为什么索引在这里是相关的

$(document).on("mouseup", ".element", function(){
    let index = $(this).parent().children();
    index = index.index(this);
});
这是一个可运行的版本


一种方法是抓住父对象,通过以下方式选择子对象:

let index = $(this).parent().children();
let index = $(this).parent().children();
然后,使用此命令获取索引:

index.index(this);
index.index(this);
总而言之,虽然我不知道为什么索引在这里是相关的

$(document).on("mouseup", ".element", function(){
    let index = $(this).parent().children();
    index = index.index(this);
});
$(document).on(“mouseup”,“.element”,function()){
让索引=$(this.parent().children();
索引=索引。索引(本);
console.log(索引)
});

测试0
测试1
测试2
测试3
测试4

测试5
我实际上弄错了
$(this)
在```$(文档)的范围内调用;实际返回触发此事件的元素

这意味着我的问题毫无意义,但如果其他人有同样的错误问题,我会把它留给历史来考虑。


<body>
    <ul class="element">
        <li >one</li>
        <li >two</li>
        <li >three</li>
        <li >four</li>
        <li >five</li>
        <li >six</li>
    </ul>
    <script>
        $(document).on("mouseup", ".element", function (e) {
            //Do things 
            //var index = $(this).index();
            console.log($(e.target).index());
        });
    </script>
</body>
  • 一个
  • 两个
  • 三个
  • 四个
  • 5
$(document).on(“mouseup”,“.element”,函数(e){ //做事 //var index=$(this.index(); log($(e.target.index()); });
对于这种html,您所需要做的就是在回调中包含事件对象。
如上所示,它在控制台窗口上打印索引。

$('.element')
返回一个元素数组,而index是该数组的索引。在您的上下文中,索引没有任何意义。您试图实现什么?类中有多个元素触发页面上的mouseup事件。我需要索引,以便以后可以使用
$(“.element).eq(n)
,以便可以将更改应用于触发事件的特定元素。使用
$(this)有什么问题
哪个也会返回元素?听起来你很难做到这一点。如果元素是动态生成的,索引可能会更改,等等。如果你想用更简单的方式使用鼠标单击,谢谢你的回答,但遗憾的是,我错了,使用$(这个)在on事件处理程序中,确实返回触发事件的元素。如果不是这样,您的答案将不起作用,因为您将尝试检索文档的父级,该父级不存在。它确实是,但不返回索引。我想我误解了问号否,它将返回
$(此)
您单击的元素会建议您将问题记下来。它没有真正意义。更有可能会让人困惑。