我正在尝试从表行中提取数据以便可以更新,但我真的很困惑为什么它没有发生。下面是生成的HTML片段。记录ID作为属性“name”的值保存在第一个数据元素中。在下面的示例中,它是2。
<tr title="Grp2">
<td title="Select box"><input name="2" type="CHECKBOX"></td>
<td title="ID">Dom</td>
<td title="Description">Domestic</td>
<td title="Archive">No</td>
<tr>
这已经成功地识别了适当的删除记录。我现在正在尝试扩展它,并获取“ID”和“描述”元素的值作为更新函数的一部分,但在尝试运行代码时在Firefox中不断收到此错误。
Syntax error, unrecognized expression: tr["title"="Grp14"]
js是:
function show_update_form() {
lvl_prefix = $("#lvl_prefix").val() ;
id = $("#grp_table_id").val() ;
var grp_list = new Array();
var list = "" ; // list of category groups to be deleted
var target = "" ;
var cnt = 0 ;
var confirm_list = "" ;
var msg = "" ;
var sel_ID = "" ;
var sel_Desc = "" ;
var fld_ID = "" ;
var fld_Desc = "" ;
// create json list of groups to update
list = '{"groups": [' ;
target = id + " input:checked";
cnt = 0 ;
$(target).each(function(index){
list += '{"id":' + $(this).attr("name") + '},' ;
grp_list.push($(this).attr("name")) ; // get list so can confirm delete
cnt++ ;
sel_ID = 'tr["title"="Grp' + grp_list[cnt - 1] + '"] ' ; // get current values
sel_Desc = 'tr["title"="Grp' + grp_list[cnt - 1] + '"] ' ;
fld_ID = $('tr["title"="Grp2"] ').filter('td["title"="ID"]').text() ;
// fld_Desc = $(sel_Desc).filter('td["title"="Description"]').text() ;
dlg_grp_update.dialog("open"); // show form and populate with current values
}) ;
list = list.substr(0, (list.length -1)) + ']}' ; // remove last comma and add closing brackets
if (cnt == 0) { // ensure there is something to update
alert( "Please select the Group you wish to update.") ;
return ;
}
} // function show_update_form
Firefox有一个疝气:
fld_ID = $('tr["title"="Grp2"] ').filter('td["title"="ID"]').text() ;
你可以看到它周围的线条,计划是从变量生成这一行,但我试图尽可能地简化它,并且现在硬编码它只是为了查看生成过程中是否存在拼写错误。
这有一种简单而明显的感觉,但你看不到所有树木的木材!
想法?选择具有特定属性的表行的正确语法是什么?
感谢, 达里尔
答案 0 :(得分:3)
jQuery filter()
未正确使用。
filter
表示使用一组元素并过滤掉具有指定选择器的元素。
find
用于使用指定的选择器在元素集中查找元素。
所以试试这个:
fld_ID = $('tr[title="Grp2"] ').find('td[title="ID"]').text();
顺便说一下,使用title
可能不是最好的方法。向tr
添加ID会更好:
Vijay是正确的,title
周围的双引号导致选择器出现问题。我已经更新了我的答案。
答案 1 :(得分:2)
您需要从表达式的标题中删除双引号。
fld_ID = $('tr[title="Grp2"] td[title="ID"]').text() ;