2012-05-10 60 views
1

我使用jQuery 1.7.2一個Specifc屬性(ID)。 橫向HTML元素直到使用jQuery

我要上 鼠標使用jQuery在我的頁面上的任何HTML元素,以橫向的HTML元素直到一個Specifc屬性(ID)。

我們有父母()函數,但問題是如何具有id屬性

$("*", document.body).click(function (e) { 
    e.stopPropagation(); 
    var domEl = $(this).get(0);  
     var parentEls = $(domEl).parents() 
     .map(function() { 
       return this.tagName; 
      }) 
     .get().join(", "); 

$( 「B」)的父元素選擇停止追加( 「」+ parentEls +「」)。 });

這是代碼,但我得到的所有元素,直到根 ,但我想停止在具有ID屬性的標籤壁櫥元素

請幫助我。

+0

這真的很難說什麼你真的* * 試圖做..你嘗試過什麼? – MilkyWayJoe

回答

3

只需使用closest

$(this).closest('#the-id'); 

除非傻冒只是爲了尋找最接近的一種,任何具有id屬性,這將是:

$(this).closest('[id]'); 

編輯:看到更新後的問題後,這應該是你想要什麼:

$(document).click(function(e) { 
    e.preventDefault(); 
    var parents = $(e.target).parentsUntil('[id]') 
     .map(function() { return this.tagName; }).get().join(','); 
    console.log(parents); 
}); 

注意,這種方法實現你想要什麼沒有選擇和有約束力的單擊事件在DOM,這是一個相當沉重的霸道做法的每個節點。


編輯(再一次):貌似也許你希望包括它的id屬性的標籤(上述方案就是一切了,但不包括標籤)。要做到這一點,解決方法是非常相似:

$(document).click(function(e) { 
    e.preventDefault(); 
    var $parents = $(e.target).parentsUntil('[id]'); 
    var tagNames = $parents.add($parents.parent()) 
     .map(function() { return this.tagName; }).get().join(','); 
    console.log(tagNames); 
}); 
+1

OP沒有提出明確的問題。現在他有答案是相關的。 +1 –

+0

我明白了感謝 –

+0

嘿傢伙這是工作我正在尋找幫助 –

1

它看起來像你想從點擊的元素層次結構映射到文檔根目錄。在這種情況下,你可以申請parents()event.target

$(document).click(function(e) { 
    e.preventDefault(); 
    var parentEls = $(e.target).parents().map(function() { 
     return this.tagName; 
    }).get().join(", "); 
}); 

需要注意的是,作爲jmar777,你也應該改變你的選擇:"*"添加一個事件處理程序所有的元素,這可能不是你想要的。將單個處理程序綁定到document,而不是利用事件冒泡。

+0

我不知道用戶點擊或移動鼠標的位置,我們可以得到的ID是主要問題 –

+1

看來我理解你的問題倒退了。我會更新我的答案。 –

+0

謝謝你@FrédéricHamidi –