2014-10-07 139 views
2

我試圖建立一個數組,每個元素導致,例如,在jquery中點擊一段文本。查找導致jQuery中選定元素的元素列表

說我有這個網站:「嘿」

<div class='foo'> 
<div class='bar'> 
<span id='42'><h1>Hey there!</h1></span 
</div> 
</div> 

當我點擊我想:

<div class='foo'> 
<div class='bar'> 
<span id='42'><h1> 

存儲在,比如說,一個數組,但我不想我點擊的文本值,也沒有任何後來的東西。我一直在探索各種選擇,但我很難提出任何問題。

+1

請解釋一下你想在一個陣列那種HTML做什麼。你的用例不夠清楚。通常,可以存儲所有父元素的所有類和ID參數值,但爲什麼要使用HTML?它真的是你想存儲的整個HTML嗎?如果是這樣,爲什麼一個數組? – Unrealist 2014-10-07 23:11:26

+0

@Unrealist它不一定是我需要存儲的整個html結構,但是我確實需要知道在我點擊的文本之前有3個div,並且它們有'foo','bar' ,和「肥皂」班。我在做一些拼湊,並試圖從網頁中提取數據。 – HZone2 2014-10-07 23:15:55

+0

只需創建一個遞歸檢查父元素以查看是否存在的單擊處理函數,這應該會給出元素層次結構 – tymeJV 2014-10-07 23:20:29

回答

0

以下寄存器,它記錄有關的祖先元素每次的東西被點擊頁面上的信息的點擊處理程序:

$('body').on('click', function (event) { 
    var info = $($(event.target).parents().get().reverse()).map(function() { 
     var $this = $(this); 
     return { 
      node: this.nodeName, 
      id: this.id, 
      className: $this.attr('class') 
     }; 
    }).get(); 
    console.log(info); 
}); 
+0

這看起來就是我需要的,謝謝! – HZone2 2014-10-08 00:24:29

0

您可以嘗試使用.parent()和.index()的組合來解決此問題。 顯然,如果表現是一個問題,我不會建議這種方法。

var el = $('#42'); 
var parent = el.parent(); 
parent.index(el); // 4 

然後你可以先檢查元素。