Javascript 如何获取使用jQuery单击的dt的索引?

Javascript 如何获取使用jQuery单击的dt的索引?,javascript,jquery,html,Javascript,Jquery,Html,我的HTML看起来像: <div id="aGroupOfLists"> <dl id="list0"> <dt> header0 </dt> <dd> item0 in list0 </dd> <dd> item1 in list0 </dd> <dd> item2 in list0 </dd>

我的HTML看起来像:

<div id="aGroupOfLists">
    <dl id="list0">
        <dt> header0 </dt> 
        <dd> item0 in list0 </dd> 
        <dd> item1 in list0 </dd> 
        <dd> item2 in list0 </dd> 
    </dl>
    <dl id="list1">
        <dt> header1 </dt> 
        <dd> item0 in list1 </dd> 
        <dd> item1 in list1 </dd> 
    </dl>
</div>
但它总是给出指数1

感谢您的回答。

您需要执行以下操作:

$('#list0 dt').click(function() {
    var index = $(this).index();
    alert(index);
});
检查这个

或者,如果要访问两个dl节点的索引

选中您需要执行的操作:

$('#list0 dt').click(function() {
    var index = $(this).index();
    alert(index);
});
检查这个

或者,如果要访问两个dl节点的索引


选中

如果要单击DT,必须将其包含在选择器中:

$('#list0 dt').click(function() {
    var index = $("#list0").index(this);
    alert(index);
});

如果要单击DT,必须将其包含在选择器中:

$('#list0 dt').click(function() {
    var index = $("#list0").index(this);
    alert(index);
});
为什么不

$('dt').click(function(){
var index = $(this).index();
alert(index); // or just do whatever you want with index
}
为什么不

$('dt').click(function(){
var index = $(this).index();
alert(index); // or just do whatever you want with index
}
试试这个

$('dl dt').click(function() {
    alert("DT Index: "+$(this).index());
});
拉小提琴试试这个

$('dl dt').click(function() {
    alert("DT Index: "+$(this).index());
});

小提琴

我个人建议:

$('#aGroupOfLists').on('click', 'dl dt', function(e){
    // logs the index of the clicked 'dt' element amongst its siblings:
    console.log($(e.target).index());

    // logs the index of the clicked 'dt' from amongst all 'dt' elements:
    console.log($(e.target).index(e.target.tagName));
});

根据问题和评论中新添加的信息,下面是OP中的信息,现在很明显我们正在尝试获取dd元素的索引以及其中的文本,因此:

$('#aGroupOfLists').on('click', 'dl dd', function(e){
    /* logs the index of the clicked 'dd' element amongst its siblings
       (which includes the 'dt' elements): */
    console.log($(e.target).index());

    // logs the index of the clicked 'dd' from amongst all 'dd' elements:
    console.log($(e.target).index(e.target.tagName));

    console.log('Text: ' + $el.text());
});

参考资料:

. . .
我个人建议:

$('#aGroupOfLists').on('click', 'dl dt', function(e){
    // logs the index of the clicked 'dt' element amongst its siblings:
    console.log($(e.target).index());

    // logs the index of the clicked 'dt' from amongst all 'dt' elements:
    console.log($(e.target).index(e.target.tagName));
});

根据问题和评论中新添加的信息,下面是OP中的信息,现在很明显我们正在尝试获取dd元素的索引以及其中的文本,因此:

$('#aGroupOfLists').on('click', 'dl dd', function(e){
    /* logs the index of the clicked 'dd' element amongst its siblings
       (which includes the 'dt' elements): */
    console.log($(e.target).index());

    // logs the index of the clicked 'dd' from amongst all 'dd' elements:
    console.log($(e.target).index(e.target.tagName));

    console.log('Text: ' + $el.text());
});

参考资料:

. . .
你将点击处理程序绑定到DL,而不是DTs。我的答案是最简单的…接受它,你知道你想要的..哈哈:你将点击处理程序绑定到DL,而不是DTs。我的答案是最简单的…接受它,你知道你想要..lol:看起来OP想要将事件处理委托给单个元素以避免创建数百个事件处理程序。看起来OP想要将事件处理委托给单个元素以避免创建数百个事件处理程序。谢谢你的回答!我正在努力。但是,请再次检查这个问题。我以前犯过一个错误。dt标记实际上是列表的标题。项目应放在dd中,而不是dt中@大卫·托马索,你想得到dt或dd的索引吗?我想我找到答案了。谢谢你的提示。我将很快更新我的帖子。谢谢你的回答!我正在努力。但是,请再次检查这个问题。我以前犯过一个错误。dt标记实际上是列表的标题。项目应放在dd中,而不是dt中@大卫·托马索,你想得到dt或dd的索引吗?我想我找到答案了。谢谢你的提示。我会很快更新我的帖子。