2011-05-22 84 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