1

忽略我是如何做到这一点的(我已经汇总了各种函数调用以简化示例),为什么我得到Object does not support this property or method for next()call of the 4th line below ?

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 为 a 生成,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()返回一个 DOM 元素,而不是 jQuery 对象,并且 DOM 元素不支持next()方法(jQuery 对象支持)。

您可以使用eq(0)first()代替:

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