如何检查是否select了一个选项?
$('#mySelectBox option').each(function() { if ($(this).isChecked()) alert('this option is selected'); else alert('this is not'); });
显然, isChecked
不起作用。 所以我的问题是什么是正确的方法来做到这一点? 谢谢。
UPDATE
select选项的更直接的jQuery方法是:
var selected_option = $('#mySelectBox option:selected');
回答问题.is(':selected')
是你正在寻找的东西:
$('#mySelectBox option').each(function() { if($(this).is(':selected')) ...
非jQuery(可以说是最佳实践)的方式是:
$('#mySelectBox option').each(function() { if(this.selected) ...
虽然,如果你只是在寻找选定的价值尝试:
$('#mySelectBox').val()
如果您正在查找所选值的文本,请执行以下操作:
$('#mySelectBox option').filter(':selected').text();
查看: http : //api.jquery.com/selected-selector/
下次查找重复的SO问题:
获取当前选定的选项或设置选定的选项或如何获得$(这个)在jQuery中select的选项? 或选项[selected = true]不起作用
你可以通过这种方式得到select的选项:
$('#mySelectBox option:selected')...
现场演示
但是,如果你想迭代所有的选项,用this.selected
而不是this.isChecked
它不存在:
$('#mySelectBox option').each(function() { if (this.selected) alert('this option is selected'); else alert('this is not'); });
现场演示
更新:
你有很多答案build议你使用这个:
$(this).is(':selected')
好吧,它可以做得更快,更容易与this.selected
所以你为什么要使用它,而不是本地DOM元素的方法?!
阅读了解 jQuery
标记信息中的DOM属性和函数
如果你不熟悉或不熟悉is()
,你可以检查prop("selected")
。
如这里所见 :
$('#mySelectBox option').each(function() { if ($(this).prop("selected") == true) { // do something } else { // do something } });
编辑 :
正如@gdoron在注释中指出的那样,访问选项的选定属性的更快和最合适的方式是通过DOMselect器。 这里是显示这个动作的小提琴更新 。
if (this.selected == true) {
似乎也工作! 谢谢gdoron。
使用
$("#mySelectBox option:selected");
来testing它是否有一个特定的选项myoption
:
if($("#mySelectBox option:selected").text() == myoption){ //... }
在我的情况下,我不知道为什么select总是如此。 所以我能想到的唯一方法是:
var optionSelected = false; $( '#select_element option' ).each( function( i, el ) { var optionHTMLStr = el.outerHTML; if ( optionHTMLStr.indexOf( 'selected' ) > 0 ) { optionSelected = true; return false; } });
如果您只想检查是否select了某个选项,则不需要遍历所有选项。 做就是了
if($('#mySelectBox').val()){ // do something } else { // do something else }
注意:如果你有一个值为0的选项,你可以select,你需要将if条件改为$('#mySelectBox').val() != null