2014-03-04 98 views
0

這裏的第一個div是我的代碼:如何檢索HTML變量

var htmlVar= $("<div id=\"foo\"><div id=\"bar\">Content</div></div>"); 
var firstDiv= htmlVar.find("div").first(); 

這並不像預期的那樣真正的第一個div「foo」的工作,是不是考慮。我包裹着我的htmlVar到另一個DIV做這個:

var htmlVar= $("<div>" + "<div id=\"foo\"><div id=\"bar\">Content</div></div>" + "</div>"); 

但是這個代碼是醜陋,我敢肯定有一些清潔的方式來做到這一點。

我也想我的代碼總是返回一個html var的第一個div,無論它的結構如何。例如,它也應該爲這種情況返回「foo」div:

var htmlVar= $("<html><body><div id=\"foo\">Content</div></body></html>"); 

任何想法?

回答

1
var first = htmlVar[0]; 

var first = htmlVar.get(0); 
+0

起初看起來相當驚人的,但不與這樣的情況下工作: 變種htmlVar = $( 「<跨度類= \ 」跨度級\「>

Content
」); 它將返回範圍,而不是第一個div – user3367171

0

你試過分裂它呢?

var htmlVar = $('<div />'); 
var newDiv = $('<div />').html('Content'); 
htmlVar.append(newDiv); 

console.log(htmlVar.find('div:first')); 
1

如果你喜歡你在最後的例子有有一個HTML文檔,你可以輕鬆地運行:$(「格:第一」)來獲得頁面上的第一個div。

你的第一個例子不起作用的原因是因爲find命令在它的當前元素下面。想想它就像你在你的房子裏,然後你打開前門。你告訴電腦找到它看到的第一個房子。它會找到你的鄰居,因爲它已經在你的房子裏,不能看到它自己。希望這是有道理的。

+0

如何在var而不是在文檔上執行這樣的方法? (並感謝解釋,似乎合法的我=) – user3367171

+1

$(htmlVar).find('div:first')。在$()中包裝你的變量將把它轉換成一個jquery對象,然後你可以做一切你通常可以在頁面上爲變量做的事情。希望有所幫助。 – jpaddock