2011-10-23 184 views
3

如何循環存儲在'ul'標籤的變量中的HTML?這是我迄今爲止,但警告()甚至不觸發,我是個有點失落......循環遍歷變量中的元素

var data = 'HTML'; 
$('ul', data).each(function(i,v) { 
    var theTag = v.tagName; 
    var theElement = $(v); 
    var theValue = theElement.html(); 
    alert(theTag+'\n'+theElement+'\n'+theValue); 
}); 

感謝

回答

6

您正在嘗試使用$() call的 「選擇器,上下文」 的形式:

jQuery的(選擇器[,上下文])
選擇含有一個選擇器表達式
上下文用作上下文的DOM元素,文檔或jQuery

一串HTML不匹配context應該是這樣的東西,所以jQuery不知道如何處理你的參數並做出錯誤的猜測。

你可能想要做這樣的:

$(data).filter('ul').each(function(i,v) { 
    //... 
}); 

演示:http://jsfiddle.net/ambiguous/gxGB8/

或者,如果你不't know at what level the <ul> elements will be, wrap the HTML in a <div> and usefind而不是filter

$('<div>' + data + '</div>').find('ul').each(function(i, v) { 
    //... 
}); 

演示:http://jsfiddle.net/ambiguous/tM4ua/

+0

非常感謝......英雄! – arbme

2

.val()返回表單輸入的值。
它不適用於任意元素。

您想要.text().html()

編輯:要找到一個HTML字符串元素,你應該寫$(html).find('ul')

+0

謝謝,但它仍然沒有工作。警報甚至不會觸發。 – arbme

0

嘗試從你刪除的數據上下文範圍UL選擇

+0

如果我這樣做,它會遍歷文檔而不是變量。 – arbme

0

試試這個:

$('ul').each(function() { 
    // Gets underlying element object 
    var theElement = $(this).get(0); 

    var theTag = theElement.tagName; 

    // Can also use .text() if you want just the textual content 
    var theValue = $(this).html(); 

    // theElement can't be printed, it's an object 
    alert(theTag+'\n'+theValue); 
}); 

我在這裏假設您想要一個<ul>標記的內容,而不是單個列表的<li>部分。

+0

順便說一句,如果它沒有得到警報,打開Firebug或類似的 - 你可能有一個JS錯誤。 – halfer

+0

我想通過變量中的元素而不是文檔本身來循環,這可能嗎?我在Firebug控制檯中沒有錯誤,看起來我找不到變量中的元素。謝謝 – arbme

0

檢查此fiddle

它可以幫助!