1

我表中的每一行都有一个下拉列表。下拉列表中的值是“编辑”和“取消”。我想编写一个 jquery 选择器,它将返回我所有的下拉菜单,其中的 selectedvalue 为“编辑”。我该怎么做?

所有行的编辑控件名称都相同。像这样动态地形成编辑控件。下面的代码在一个循环内。

    $tr.append(
                '<td>' +
                '<select id=\"editOption\">' +
                    '<option value=\"'+pkid+'_select\"></option>' +
                    '<option value=\"'+pkid+'\">Edit</option>' +
                    '<option value=\"'+pkid+'\">Cancel</option>' +
                '</select>' +
                '</td>'
        );

根据建议,我将代码更改为

'<td>' + 
    '<select id=\"editOption_'+pkid+'\" class=\"editOption\">' + 
        '<option value=\"-1\"></option>' + 
        '<option value=\"Edit\">Edit</option>' + 
        '<option value=\"Cancel\">Cancel</option>' + 
        '</select>' + 
'</td>'

当我使用这个时:

var editedRows = $("table tr select").filter(function() { 
    return $(this).find("option").value == "Edit"; //This should be value, but for your code, its text() 
}); 
console.log(editedRows.length); 

长度为零。

4

2 回答 2

2

你可以使用一个filter函数:

var editSelects = $("table tr select").filter(function() {
    return $(this).find("option").text() == "Edit"; //This should be value, but for your code, its text()
});

此外,根据@JasonP 评论,您的 ID必须是唯一的。

于 2013-08-01T20:35:05.193 回答
0

这很好用,如果选择 = 编辑,它会发出警报

var table = document.getElementById("prsnl");  
var rows = table.getElementsByTagName("tr"); 
for(j = 0 ; rows.length; j++){
var select = rows[j].getElementsByTagName("select");
    for(i = 0; i < select.length; i++){
        alert(select[i].value);
        if(select[i].value.indexOf("Edit") >= 0){
            alert('hi');
        }else{
            alert('fail');
        }
    }
}
于 2013-08-02T01:10:52.827 回答