1

我有以下函数,它会在点击后遍历我的 ASP.NET 中的所有ListBox项目:

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

}

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

我试过:

if ($(this).selected())

...这引发了一个错误,说明object not supported. 我也试过:

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

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

如何在我的函数中检查循环中的当前项是否为selected

4

2 回答 2

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

应该就足够了,如果不是,那么this就不能指代您的想法。

如果option没有selected属性,那么您将得到undefined-- 因为该属性不存在。因此,this.selected将起作用;和假undefined一样

注意 - 对于您描述的两种情况,您都会收到相应的错误消息。

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/

于 2013-09-24T02:56:04.717 回答
0

option我在如何确定是否选择了该值时弄清楚了这一点。我使用了prop() jQuery 中的方法,如下所示:

$('#<%=MyListBox.ClientID %>').children("option").each(function () {
    if ($(this).prop('selected'))
    {
       //Do work here for only elements that are selected
    }
}
于 2013-09-24T15:44:33.307 回答