0

私はこれです:http://jsfiddle.net/ZP76c/

jQueryがindex()に基づいて要素を選択するスコープを制御しようとしていますか?

<div class="holder">
    <div class="first">First</div>
    <div class="second">Second</div>
    <div class="first">First</div>
    <div class="second">Second</div>
</div>​

$('.holder div').click(function(){
     alert($(this).index());            
});

// desired behaviour: clicking the first 'first' div will alert: "0"
// clicking the second 'first' div, will alert: "1"
// so it takes the divs with a class of 'second' out of the index() calculation
// possible with jQuery .index()?
​
4

2 に答える 2

1

以下はあなたのニーズに合うはずです:

$('.holder div.first').click(function() {
    alert($(this).index(".first"));            
});

または、より一般的な解決策の場合(.second同じように):

$('.holder div').click(function() {
    alert($(this).index("." + $(this).prop("class")));            
});

ただし、これは、各divにクラスが1つしかなく、クラスが「//」などの場合にのみ機能しfirstます。secondthird

また、divに複数のクラスがある場合は、代わりにデータ属性を追加して、次のようにすることができます。

$('.holder div').click(function() {
    alert($(this).index("[data-category=" + $(this).attr("data-category") + "]"));            
});

およびHTML:

<div class="holder">
    <div class="first" data-category="first">First</div>
    <div class="second class-does-not-matter" data-category="second">Second</div>
    <div class="first another-div-class" data-category="first">First</div>
    <div class="second div-class" data-category="second">Second</div>
</div>​​​​​​​​​​​​​​​​​​

data-categoryメンバーであるカテゴリに設定された場所。

于 2012-06-18T11:34:11.787 に答える
0

.index()インデックスを計算するセレクターに渡すことができます。例:あなたの場合、alert($(this).index('div.first'));

于 2012-06-18T11:38:28.017 に答える