Javascript 如何在jQuery中捕获索引

Javascript 如何在jQuery中捕获索引,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想使用index()方法获取元素的索引。我准备了这段代码,但是这个函数总是返回-1。我想了解: 为什么此函数返回-1 如何修复它以获得正确的索引 如果你有什么意见,请告诉我 谢谢 const$days=$(this.find('.day'); $(“#calendar.day”)。在(“单击”,函数(){ log(“index”,$days.index(this)); }); td{ 填充:10px; 边框:纯黑1px; } 桌子{ 边界塌陷:塌陷; } 1. 2. 3. 4. 5. 6.

我想使用
index()
方法获取元素的索引。我准备了这段代码,但是这个函数总是返回
-1
。我想了解:

  • 为什么此函数返回
    -1

  • 如何修复它以获得正确的索引

  • 如果你有什么意见,请告诉我

    谢谢

    const$days=$(this.find('.day');
    $(“#calendar.day”)。在(“单击”,函数(){
    log(“index”,$days.index(this));
    });
    
    td{
    填充:10px;
    边框:纯黑1px;
    }
    桌子{
    边界塌陷:塌陷;
    }
    
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    
    当您构建
    .day
    元素的jQuery列表时,它应该是

    const $days = $("#calendar .day");
    

    在全局级别,
    这个
    将是对
    窗口的引用,jQuery将无法使用它。因此,您得到了
    -1
    ,这意味着元素不在列表中。

    当您构建
    .day
    元素的jQuery列表时,它应该是

    const $days = $("#calendar .day");
    

    在全局级别,
    这个
    将是对
    窗口的引用,jQuery将无法使用它。因此,您得到了
    -1
    ,这意味着该元素不在列表中。

    问题是因为
    第一行中的此
    引用了
    窗口
    元素,因此
    查找('.days')
    不返回任何内容。因此索引总是
    -1

    要解决此问题,只需在单击的元素上使用
    index()

    const$days=$(“#calendar.day”)。在(“单击”,函数(){
    log(“index”,$(this.index());
    });
    
    td{
    填充:10px;
    边框:纯黑1px;
    }
    桌子{
    边界塌陷:塌陷;
    }
    
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    
    问题是因为第一行中的
    这个
    引用了
    窗口
    元素,所以
    find('.days')
    不返回任何内容。因此索引总是
    -1

    要解决此问题,只需在单击的元素上使用
    index()

    const$days=$(“#calendar.day”)。在(“单击”,函数(){
    log(“index”,$(this.index());
    });
    
    td{
    填充:10px;
    边框:纯黑1px;
    }
    桌子{
    边界塌陷:塌陷;
    }
    
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    
    无需使用jQuery即可完成此操作

    let index = [...this.parentElement.childNodes].indexOf(this);
    

    不需要使用jQuery就可以做到这一点

    let index = [...this.parentElement.childNodes].indexOf(this);
    
    当您调用
    $(this.find()
    时,您期望
    这个
    是什么?“为什么这个函数返回-1”->
    控制台.log(this,$days.length)
    当您调用
    $(this.find()
    ,您期望
    这个
    是什么?”为什么这个函数返回-1”->
    控制台.log(this,$days.length)