使用jQuery确定是否选择了ASP.NET ListBox项

时间:2013-09-24 02:51:37

标签: jquery asp.net listbox

我有以下功能,点击后会迭代我的ASP.NET ListBox所有项目

$('#<%=MyListBox.ClientID %>').children("option").each(function () {

}

我不希望上面的这个函数改变,因为对于外部函数,我需要遍历所有项来处理一些逻辑。但是在内部我需要查看是否选择了焦点项目并且无法使其正确。我搜索了大量的帖子,这些帖子可以让函数只返回选中的项目,但我想检查是否检查了此函数中的当前项目。

我试过了:

if ($(this).selected())

...并且引发了object not supported的错误。我也尝试过:

if ($(this).selected == true)

...它说selected未定义,但当我查看$(this) selected的值为false时。

如何检查我的函数以查看循环中的当前项是selected

2 个答案:

答案 0 :(得分:0)

if(this.selected) /* ... */

如果不够,那么this就没有提及你的想法。

If the option doesn't have a selected attribute, then you'll get undefined - 因为该属性不存在。因此,this.selected将起作用;因为undefined falsey

注意 - 您收到了针对您所描述的两种情况的相应错误消息。

if ($(this).selected()) /* there is no method `selected` for this
                           jQuery object */

if($(this).selected == true) /* selected will be undefined for option's that
                                don't have a selected attribute */

http://jsfiddle.net/R6KA8/

答案 1 :(得分:0)

我在如何确定是否选择了option值时想到了这一点。我使用了prop() method from jQuery,如下所示:

$('#<%=MyListBox.ClientID %>').children("option").each(function () {
    if ($(this).prop('selected'))
    {
       //Do work here for only elements that are selected
    }
}