我正在尝试从表行中提取数据以便对其进行更新,但我真的很困惑为什么它没有发生。下面是生成的 HTML 片段。记录 ID 作为属性“名称”的值保存在第一个数据元素中。在下面的示例中,它是 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() ;
你可以从它周围的线条中看出,计划是从变量生成这一行,但我已经尝试尽可能地简化它,现在已经对其进行了硬编码,只是为了查看生成过程中是否有拼写错误。
这有一种简单明了,但见树不见林的感觉!
想法?选择具有特定属性的表行的正确语法是什么?
谢谢, 达里尔
最佳答案
jQuery filter()
没有被正确使用。
filter
表示获取一组元素并过滤掉具有指定选择器的元素。
find
用于使用指定的选择器在元素集中查找元素。
那么试试这个:
fld_ID = $('tr[title="Grp2"] ').find('td[title="ID"]').text();
顺便说一句,使用 title
可能不是最好的方法。将 ID 添加到 tr
会更好:
- 将鼠标悬停在行上时,用户不会看到标题工具提示
- javascript id 选择器比属性选择器快得多,因此如果您要处理大量行,使用 id 总体上会更快。
Vijay 是正确的,title
周围的双引号导致选择器出现问题。我已经更新了我的答案。
关于javascript - jquery 选择具有特定属性的表行的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28312702/