1

どのようにしてこれに到達したかを無視して (例を単純化するためにさまざまな関数呼び出しをまとめました)、下の 4 行目の呼び出しでオブジェクトがこのプロパティまたはメソッドをサポートしていないのはなぜですか?next()

選択したすべての項目のラベル テキストを連結する JQuery:

var cbs = $('#controlId :checkbox');              // Get all checkboxes for the specified control id
var rest = cbs.slice(1);                          // Get all items except the first
var checked = rest.filter(':checked');            // Get all checked items
var result = checked.get(0).next('label').text(); // Error here getting first label text
for (var i = 1; i < checked.length; i++) {
            result = result + ', ' + checked.get(i).next('label').text();
}

HTML は ASP.Net によって生成されCheckBoxList、次のようになります。

<table id="controlId">
    <TBODY>
        <TR>
            <TD>
                <INPUT id=MainContent_DropDownCheckBoxList4_checkBoxList_0 value=ALL type=checkbox>
                <LABEL for=MainContent_DropDownCheckBoxList4_checkBoxList_0>All</LABEL>
            </TD>        
        </TR>
        <TR>
            <TD>
                <INPUT id=MainContent_DropDownCheckBoxList4_checkBoxList_1value=0 type=checkbox>
                <LABEL for=MainContent_DropDownCheckBoxList4_checkBoxList_1>Item 0</LABEL>
            </TD>
        </TR>
        <TR>
            <TD>
                <INPUT id=MainContent_DropDownCheckBoxList4_checkBoxList_2 type=checkbox>
                <LABEL for=MainContent_DropDownCheckBoxList4_checkBoxList_2>Item 1</LABEL>
            </TD>
        </TR>
    </TBODY>
</TABLE>

チェックボックスのラベルテキストを取得する正しい方法は何ですか (上記のスタイルのコードを使用)?

$('#controlId') で始まるセレクターを使用して回答を提供しないでください。

4

1 に答える 1

2

これは、get()が jQuery オブジェクトではなく DOM 要素を返し、DOM 要素がnext()メソッドをサポートしていない (jQuery オブジェクトがサポートしている) ためです。

代わりにeq(0)またはfirst()を使用できます。

var result = checked.first().next("label").text();
于 2012-07-11T09:45:48.980 に答える