我的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>
请注意,我在dl
中放了两个div
,而在每个dl
中都有一些dt
。
我想通过使用jQuery知道用户点击了哪个dt
。
所以我写道:
$('#list0').click(function() {
var index = $("#list0").index(this);
alert(index);
});
但它总是给出索引1
。
感谢您的回答。
答案 0 :(得分:3)
你需要这样做:
$('#list0 dt').click(function() {
var index = $(this).index();
alert(index);
});
选中此fiddle
或者,如果要访问两个dl
节点的索引,
$('#aGroupOfLists dl dt').click(function() {
var index = $(this).index();
alert(index);
});
答案 1 :(得分:2)
我个人建议:
$('#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());
});
参考文献:
答案 2 :(得分:1)
为什么不呢......
$('dt').click(function(){
var index = $(this).index();
alert(index); // or just do whatever you want with index
}
答案 3 :(得分:0)
试试这个
$('dl dt').click(function() {
alert("DT Index: "+$(this).index());
});
答案 4 :(得分:-2)
如果要单击DT,则必须将其包含在选择器中:
$('#list0 dt').click(function() {
var index = $("#list0").index(this);
alert(index);
});