2013-08-01 39 views
1

我的表中的每一行都有一个下拉列表。下拉列表中的值是“编辑”和“取消”。我想写一个jquery选择器,它会返回所有下拉列表,并具有选定的值作为“编辑”。我该怎么做?选择检索具有相同selectedindex值的所有下拉列表

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

$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

嗯..两件事情它会提醒。首先,'id's必须是唯一的,这意味着只有一个元素可以有一个特定的id。我会改变id以包含'pkid'并添加一个名为“editOption”的类。其次,这不是使用'value'属性的正确方法。值应该像“edit”和“cancel”一样。 –

+0

按照建议我改变了代码为 '​​' + \t \t \t \t \t '<选择ID = \ “editOption _ '+ PKID +' \” 类= \ “editOption \”>' + \t \t \t \t \t \t '<选项值= \ “ - 1 \”>' + \t \t \t \t \t \t '<选项值= \ “编辑\”>编辑' + \t \t \t \t \t \t '<选项值= \ “取消\”>取消' + \t \t \t \t \t '' + \t \t \t \t \t '' 和当我使用此变种editedRows = $(“表TR选择“).filter(function(){ \t \t \t return $(this).find(”option“)。value ==”Edit“; //这应该是值,但是对于你的代码,它的文本() \t \t}); \t \t console.log(editedRows.length);长度将为零 – user1447718

+0

为了便于阅读,我将您的评论移至了该问题。而不是'.value'尝试'.attr('value')'。你实际上可以做'返回$(this).val()=='编辑';'而不是,但我不确定。 –

回答

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 必须是唯一的。

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'); 
     } 
    } 
} 
相关问题