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がない場合はselectedundefined、プロパティが存在しないため -- が表示されます。したがって、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 に答える