2011-05-22 127 views
1

我試圖通過帶有多選的select標記進行循環。我是jQuery的新手,我發現了這個代碼,但是我需要遍歷所有的option標籤,檢查option是否被選中,因爲我需要在兩種情況下都做些什麼。使用jQuery循環選擇標記

$('.multiselect').change(function() { 
    $('.multiselect option:selected').each(function() { 
    //do something 
    }); 
}).trigger('change'); 

我試圖把它做成更多的東西是這樣的:

$('.multiselect').change(function() { 
    $('.multiselect').each(function() { 
    $('option', this).each(function() { 
     if ('option':selected == true) { 
     //do something 
     } 
     else { 
     //do something else 
     } 
    }); 
    }); 
}).trigger('change'); 

但是,這是行不通的。有人可以提出一個好方法嗎?

回答

4
$(".multiselect").change(function() { 
    $("option", this).each(function() { 
     if(this.selected) { 
      // This one is checked 
     } else { 
      // This one is not checked 
     } 
    } 
}); 

應該工作,我想。

+0

作品非常好!最後一個問題,我在代碼的結尾.trigger('change');但是我發現它可以或不可以,你知道它對代碼有什麼影響嗎?還是這種情況下,特別是沒有區別? – Lievcin 2011-05-22 18:41:45

+0

不,我認爲它不應該有所作爲......你究竟把它放在哪裏? – Ryan 2011-05-22 18:42:56

+0

如果你看到我最初的問題,最後是對的。但是改變事件在開始時在函數中被提及,所以它似乎有點多餘 – Lievcin 2011-05-22 18:44:28

1
$(".multiselect").change(function() {  
    $(".multiselect option").each(function(){ 
    if($(this).attr("selected") == "true"){ 
     // do something 
    } else { 
     // do something else 
    } 
    } 
} 

應該工作..

+0

當我這樣做時,出現錯誤。我使用'==='與'true'進行比較。當我使它'===',因爲它表明,那麼它會得到我所有的虛假,即使有選擇的項目 – Lievcin 2011-05-22 18:38:34

+0

嘗試與==「真」 – jonepatr 2011-05-22 18:40:20