2013-05-20 32 views
0

我希望能夠遍歷並記錄下選擇下拉框中可用的每個選項。我不確定在使用$(this)時如何執行此操作。

這就是我所擁有的。

$('select').each(function(){ 
    $(this).find('options').each(function(){ 
     var boxOpt = $(this).text(); 
     console.log(boxOpt); 
    }); 
}); 

它當前不輸出任何內容。我希望能夠做到這樣的事情: $(this + ' options').each(function(){...});但這是行不通的。

我試過 $(this).find(),$(this).children()和其他一些變化,但我不知道現在該做什麼。

有什麼建議嗎? 謝謝

+1

用於在HTML中選擇有效的兒童是「選項」,而不是「選項」 –

+0

謝謝。這解決了它 – ntgCleaner

回答

4

options應該是option。您只需將它添加到選擇的字符串:

$('select option').each(function(){ 
    var boxOpt = $(this).text(); 

    console.log(boxOpt); 
}); 
+1

爲了優化目的,這應該是'select>選項,選擇> optgroup>選項'。但如果你對優化感興趣,你將不會使用jQuery,所以LOL –

+0

Aaahh謝謝你!那讓我瘋狂。不幸的是,我必須在每條語句中使用每條語句,所以這裏的答案是半正確的。我將'options'改爲'option',它可以和.find()一起使用。再次感謝您 – ntgCleaner

+0

@ntgCleaner:您爲什麼需要使用嵌套的'each'? – Blender

2

這裏是如何做到這一點的Vanilla JS

var tags = document.getElementsByTagName('select'), l = tags.length, i, opts, m, j; 
for(i=0; i<l; i++) { 
    opts = tags[i].options; 
    m = opts.length; 
    for(j=0; j<m; j++) { 
     console.log(opts[j].text); 
    } 
} 
+0

我很欣賞答案,儘管您會討厭只在需要時才使用VJS的事實。如for循環時,每個不會削減它和基本的JavaScript像子字符串和替換,等等。正如你在上面的評論中說,我不會去優化,但我很高興你在這裏回答這個,所以我可以來回來,做得更好! – ntgCleaner