2017-10-11 26 views
-1

有無論如何,我可以知道哪個鏈接相對於div.grid在以下html中單擊了?如何獲得DOM內部深元素的索引

<div class="grid"> 
    <figure class='grid-item'> 
    <figcaption> 
     <a>link</a> 
    </figcaption> 
    </figure> 
    <figure class='grid-item'> 
    <figcaption> 
     <a>link</a> 
    </figcaption> 
    </figure> 
    <figure class='grid-item'> 
    ..... 
    </figure> 
    .... 
</div> 

我想:

index = $('div.grid').index(this); // returns -1 on every link 
index = $(this).parent().parent().parent().index(this); // returns -1 
index = $(this).index(); // returns 2 on every link 

但在前兩種情況下返回-1每一個環節上,並在第三個2(總是在每一個環節)。

+2

什麼是事件偵聽器連接到 – linasmnew

+1

請澄清...你想一個索引,如果是的話,相對於什麼呢?或者,你真的需要確定被點擊的鏈接嗎?換句話說,您需要確定鏈接的原因是什麼? –

+0

您是否在鏈接上使用事件偵聽器?如果是這樣,請在您的問題中包含代碼。 – freginold

回答

1

應該

var index = $(this).closest('.grid-item').index(); 

對於演示:

$('a').click(function(){ 
 
    var index = $(this).closest('.grid-item').index(); 
 
    alert(index); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div class="grid"> 
 
    <figure class='grid-item'> 
 
    <figcaption> 
 
     <a>link</a> 
 
    </figcaption> 
 
    </figure> 
 
    <figure class='grid-item'> 
 
    <figcaption> 
 
     <a>link</a> 
 
    </figcaption> 
 
    </figure> 
 
    <figure class='grid-item'> 
 
    <figcaption> 
 
     <a>link</a> 
 
    </figcaption> 
 
    </figure> 
 
</div>

0

如果你得到的所有鏈接的集合,然後你可以得到基於該集合的索引:

// Gather all the links in the section into an array: 
 
var links = Array.prototype.slice.call(document.querySelectorAll(".grid a")); 
 

 
// Set up an event handler for them: 
 
links.forEach(function(link){ 
 
    link.addEventListener("click", function(){ 
 
    // Just get the current link's position in the array 
 
    console.log(links.indexOf(this)); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="grid"> 
 
    <figure class='grid-item'> 
 
    <figcaption> 
 
     <a>link</a> 
 
    </figcaption> 
 
    </figure> 
 
    <figure class='grid-item'> 
 
    <figcaption> 
 
     <a>link</a> 
 
    </figcaption> 
 
    </figure> 
 
    <figure class='grid-item'> 
 
    <figcaption> 
 
     <a>link</a> 
 
    </figcaption> 
 
    </figure> 
 
</div>

0

您需要檢索父人物元素的索引。不是錨標籤的索引。

jQuery(document).on("click", ".grid a", function() { 
 
    var figure = jQuery(this).parent().parent(); 
 
    
 
    //Retrieve the index of the figure. 
 
    var index = jQuery(figure).index(); 
 
    
 
    alert(index); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="grid"> 
 
    <figure class='grid-item'> 
 
    <figcaption> 
 
     <a>link</a> 
 
    </figcaption> 
 
    </figure> 
 
    <figure class='grid-item'> 
 
    <figcaption> 
 
     <a>link</a> 
 
    </figcaption> 
 
    </figure> 
 
    <figure class='grid-item'> 
 
    </figure> 
 
</div>

相關問題