2014-11-05 23 views
1

我想要做的是通過它在div中的位置來標識元素。我已經嘗試了下面的代碼,它的工作原理,但我很好奇,如果有更有效的方法來做到這一點。jQuery - 通過它在兄弟姐妹中的位置(索引)識別對象

HTML:

<div class="container"> 
    <button>One</button> 
    <button>Two</button> 
    <button>Three</button> 
</div> 

<div class="result"></div> 

的JavaScript:

$('.container button').on('click', function(e) { 
    clickedBtn = e.target; 
    btnNum = 0; 

    $('.container button').each(function(i) { 
    if ($(this)[0] === clickedBtn) 
     btnNum = i+1; 
    }); 

    $('.result').text('Clicked button #' + btnNum); 
}); 

回答

3

既然你正在尋找基於在兄弟姐妹的索引可以撥打.index()不帶任何參數。

$('.container button').on('click', function(e) { 
 
    $('.result').text('Clicked button #' + $(this).index()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    <button>One</button> 
 
    <button>Two</button> 
 
    <button>Three</button> 
 
</div> 
 

 
<div class="result"></div>

+0

啊,這麼多的jQuery的功能來跟蹤!這非常好,這正是我需要的。謝謝! – CaptSaltyJack 2014-11-05 07:35:03

+1

@CaptSaltyJack只是提到你的原始代碼:'$(this)[0]'與'this'相同,'e.target'可以簡單地'this',這是個好主意(在未來的情況下)在'btnNum = i + 1;'之後添加'return false;'以防止下一次不必要的'.each()'迭代。請記住'.index()'統計所有同胞([fiddle示例](http://jsfiddle.net/qvgkbdo3/)) - 它可能會導致將來不正確的行爲。不要忘記標記答案是正確的。 – Regent 2014-11-05 07:42:28