jQuery:获取对象列表中DOM中与class相同的对象编号

jQuery: get object number in the DOM among the list of objects with the same class

假设我有 $('.mybutton').length==6 在页面上,这意味着我在页面上有六个对象 class .mybutton

$('.mybutton').on('click',function(){
//one of 6 buttons was clicked
});

如果我键入 $('.mybutton') ,六个对象将按某种顺序显示。

问题是:如何获取对象的编号?

假设有 6 个对象并且单击了该列表的第二个对象,我需要对第 5 个对象进行一些操作。

index()有效吗?

$('.mybutton').on('click',function(){
    console.info("button", $(this).index(), "was clicked");
});

docsIf we omit the argument, .index() will return the position of the first element within the set of matched elements in relation to its siblings 中所述,如果元素是兄弟元素,它应该可以工作。 检查以下示例:

$(".button").on("click", function() {
  $("#results").html("You've clicked on the element with the index " + $(this).index());
});
.button {
  padding: 5px;
  border: 1px solid grey;
  margin: 5px;
  cursor: pointer;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="menu">
  <div class="button">Example 0</div>
  <div class="button">Example 1</div>
  <div class="button">Example 2</div>
  <div class="button">Example 3</div>
  <div class="button">Example 4</div>
</div>
<div><b>Results:</b>
</div>
<div id="results"></div>

如果由于某些奇怪的原因不起作用,一个快速的解决方案是......

(请注意,根据标准/性能,这可能不是最佳解决方案)

$('.mybutton').each(function(i) {
    $(this).on('click',function(){
        console.info("button", i, "was clicked");
    });
});

但如果索引确实不起作用,您应该添加一个 class、id、数据参数 - 任何允许我们区分项目的东西 - 到您要修改的按钮.

例如,假设您将 class special-modifier 添加到第 5 个按钮,您将执行如下操作:

$('.mybutton').on('click',function(){
    if($(this).is(".special-modifier")) {
        console.info("special modifier button was clicked");
    }
});