【问题标题】:Get 'this' selector index获取“this”选择器索引
【发布时间】:2018-03-03 12:05:36
【问题描述】:

我有以下代码,我需要检测我点击的元素索引:

$('#id1, #id2, #id3').click(function(){ console.log( magicIndex(); ) });

当我点击<div id="id1">click</div> div 时,我需要得到0 作为输出,因为这个选择器项索引为0。

当我点击<div id="id2">click</div>时,我必须得到1作为输出。

【问题讨论】:

  • 只需编写一个返回魔法索引的函数...
  • @Teemu 这正是问题所在,因为它不是微不足道的:)

标签: javascript jquery jquery-selectors


【解决方案1】:

您只需要使用 jQuery 函数 index()。如果 HTML 结构正确,这将返回元素的位置。我刚刚为你创建了一个 jsfiddle:

https://jsfiddle.net/zLs4fo0f/6/

HTML:

<div>
  <div id="id1">
    aaaaaa
  </div>
  <div id="id3">
    bbbbbb
  </div>
  <div id="id2">
    cccccc
  </div>
</div>

<div id="result" style="color: red;">

</div>

jQuery:

$('#id1, #id2, #id3').on('click', function() {
    $('#result').text('Index: ' + $(this).index());
});

【讨论】:

  • 不,这不是 OP 所要求的。
  • @dfsq 这正是他想要的。再看看他的问题。
  • 你确定这是他要问的吗?如果您单击bbbbbb,它将返回1,但它是选择器模式中的第三项(即2)。问题不清楚。
  • 这是公认的答案,所以我 100% 肯定,这就是他想要的……否则他会发表评论,甚至接受下面的答案,其他情况如何处理。
【解决方案2】:

希望这会有所帮助。在这里,我从 div 'id' 获取索引。

function magicIndex(node){
  return node.attr('id').replace('id','')-1;
}

$('#id1, #id2, #id3').click(function(){ console.log( magicIndex($(this)) ); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="id1">Hi</div>
<div id="id2">Hello</div>
<div id="id3">Bye</div>

如果您在 div 中再添加一个 attr 索引而不是“id”,这将更加具体和有意义,因为我们不能依赖“id”。像这样的东西

function magicIndex(node){
  return node.attr('index');
}

$('#id1, #id2, #id3').click(function(){ console.log( magicIndex($(this)) ); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="id1" index='0'>Hi</div>
<div id="id2" index='1'>Hello</div>
<div id="id3" index='2'>Bye</div>

【讨论】:

  • 真的吗?这个$('p + #id1, table td:first-child, .popup').click(function() 怎么样?
  • 正如我提到的,他可以添加更具体的索引 attr
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 2014-07-12
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
相关资源
最近更新 更多