2014-01-30 33 views
1

我有一個變量包含標籤/複選框,並循環遍歷變量來填充數組,但是,當我將值壓入數組時,它不包括我的標籤。對於jQuery中沒有顯示數組標籤的每個函數

我的代碼是:

posts = $('<div> 
      <label for="q1_chk_0"><input id="q1_chk_0" type="checkbox" name="Country[]" value="DZA">Algeria</label> 
      <label for="q1_chk_1"><input id="q1_chk_1" type="checkbox" name="Country[]" value="ARG">Argentina</label> 
      <label for="q1_chk_2"><input id="q1_chk_2" type="checkbox" name="Country[]" value="ARM">Armenia</label> 
      <label for="q1_chk_3"><input id="q1_chk_3" type="checkbox" name="Country[]" value="AUS">Australia</label> 
      <label for="q1_chk_4"><input id="q1_chk_4" type="checkbox" name="Country[]" value="AUT">Austria</label></div>'); 


$postsList = posts; 

$postsList.find('label').each(function(){ 

     postsArr.push($(this).html()); 
}); 

console.log(postsArr); // The array contains all the input fields, but no labels on any of them 

這裏是我的jsfiddle

http://jsfiddle.net/mfeUR/

最終的結果我要實現的是遍歷這個數組,然後顯示其相應的標籤複選框。

感謝 乾杯

+0

,我可以看到在的jsfiddle標籤。 – jarz

+0

@jarz當我查看結果面板並檢查html時,我沒有看到標籤。我也沒有看到他們在console.log(postsArr); –

回答

2

你可以只在元素上使用outerHTML

UPDATED EXAMPLE HERE

$postsList.find('label').each(function(){ 
    postsArr.push($(this)[0].outerHTML); 
}); 
+0

,似乎有工作。還有一個簡單的問題,如果我從變量帖子中刪除

標籤,你知道它爲什麼不能工作嗎?有沒有解決方法?爲什麼我必須用div標籤包圍它。 –

+0

@MoxieC我很確定這是因爲你使用['find()'](http://api.jquery.com/find/)來選擇元素的後代。在這種情況下,如果你要刪除父母,'div'就不會有任何後代找到。 –

+0

@MoxieC至於替代方法,只需使用'filter()'。更新示例:http://jsfiddle.net/z2jCX/ –

0

我更新的fiddle

使用代碼的這樣的代碼是我的觀點更具可讀性:

div = $('<div class="third"></div>'); 
div.append(postsArr[i]); 
+0

對不起,沒有工作。它完全刪除複選框。 –

+0

對不起,我很不理解我在這方面的工作:) – guli