2014-02-24 27 views
0

嗨,我有以下的jQuery:JQuery的 - 使用.closest通過document.getElementById()

var $this = $(this); 
$this.closest('ul').find('li').removeClass('selected'); 

我試圖通過設置變量做同樣的事情元素具有與類似的ID :

var liID = $this.closest('li').attr('id'); 
var liID = liID.substring(0, liID.length - 1); 

然後試圖打電話給.closest('ul').find('li').removeClass('selected');就可以了。我已經試過這樣:

document.getElementById(liID).closest('ul').find('li').removeClass('selected'); 

這:

liID.closest('ul').find('li').removeClass('selected'); 

我並不感到驚訝第二個沒有工作,但我無法弄清楚如何使的第一個工作。有什麼建議麼?

回答

1

當你有ID,直接使用

$("#" + liID).closest('ul').find('li').removeClass('selected'); 

document.getElementById(liID)會返回一個DOM元素。要使用jQuery方法,您必須將其轉換爲jQuery對象。您可以嘗試

$(document.getElementById(liID)).closest('ul').find('li').removeClass('selected'); 
+0

第二個工作,但第一個更清潔。在時間限制結束後,我會給你答案。 – KingRichard

1

document.getElementById(liID)返回不具備的jQuery相關的方法DOM元素引用,所以你需要得到jQuery對象爲該元素使用jQuery的方法。

您可以使用ID選擇器來獲取目標元素然後使用closest()

$('#'+liID).closest('ul').find('li').removeClass('selected'); 
1

document.getElementByID()回DOM元素。

要使用壁櫥,你想要一個jQuery對象如此包裝document.getElementByID()與$使它成爲一個jQuery對象。

它會工作