2014-10-31 32 views
1

我知道有很多類似的問題,但我仍然找不到一個關於我的確切問題的問題。我沒有得到我的<select>selector;我正在迭代表單域,所以我只能通過$(this)訪問我的select

我該如何使用jQuery的'.each'函數迭代這個select的選項?

我試圖鏈,但是,這並不工作:

$(this).$('option').each(function(){ 
    if (this.value == val) { 
    // do something 
    } 
}); 

注:$(this)是我select不是我form

+0

什麼about:'$(this).find('option:selected')。doSomething()。orWhatever();'。你真的會更好地解釋你正在尋找的是 – 2014-10-31 10:44:50

回答

1

因爲你this是對select元素,您還可以訪問其.options屬性,你可以在一個jQuery對象包裝一個參考:

$(this.options).each(function(i, option){ 
    if (this.value == val) { 
    // do something 
    } 
}); 

http://jsfiddle.net/x57d8msL/

+0

哇,這也是一個不錯的解決方案。所以我認爲'this.options'是原生JavaScript?因爲這個答案不需要jQuery的'find()'函數,我猜它應該更好 - 或者我錯了? – 2014-10-31 10:34:35

+0

它可能稍微更快,大概是納秒級別,所以不要認爲它是一種優化 - 但是,「select.options」是訪問選擇元素選項列表的本地方式。 – pawel 2014-10-31 10:37:54

+0

太好了,謝謝!我很抱歉Bhushan Kawadkar,但我更喜歡你的答案。它使用非常簡單的原生JavaScript讓我學到了一些新東西。 – 2014-10-31 10:41:44

3

試試這個:你可以用.find()來選擇option

注意: - this.value指循環內的當前選項值。

$(this).find('option').each(function(){ 
    if (this.value == val) { 
    // do something 
    } 
}); 
+0

否,'$(this)'是我自己的'select'。 – 2014-10-31 10:21:23

+0

請看我更新的答案。 – 2014-10-31 10:22:10

+0

tyvm,這似乎工作。我知道必須有一個簡單的方法,只是不能**找到**它自己:​​) – 2014-10-31 10:29:49

-1
$.each($('select'), function (key, val){ 
    console.log($(val)); 
});