我表格中的每一行都有一个下拉列表。下拉列表中的值为“编辑”和“取消”。我想编写一个jquery选择器,它将返回所有下拉列表,其中selectedvalue为“Edit”。我该怎么做?
所有行的编辑控件名称相同。像这样动态地形成编辑控件。下面的代码在循环内。
$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);
长度为零。
答案 0 :(得分: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 必须是唯一的。
答案 1 :(得分: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');
}
}
}