jquery 选择具有特定属性的 table 行时出现语法错误

Syntax error with jquery selecting table row with a specific attribute

我正在尝试从 table 行中提取数据以便对其进行更新,但我真的很困惑为什么它没有发生。下面是生成的 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" 和 "Description" 元素的值作为更新函数的一部分,但是在尝试 运行代码。

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() ;

你可以从它周围的线条中看出,计划是从变量生成这一行,但我试图尽可能地简化它,现在已经对其进行了硬编码,只是为了看看生成中是否有拼写错误过程。

这有点简单明了,但见树不见林的感觉!

想法? select 具有特定属性的 table 行的正确语法是什么?

谢谢, 达里尔

jQuery filter() 未正确使用。

filter 表示取一组元素并过滤掉具有指定选择器的元素。

find 用于使用指定的选择器在元素集中查找元素。

所以试试这个:

fld_ID = $('tr[title="Grp2"] ').find('td[title="ID"]').text();

顺便说一句,使用 title 可能不是最好的方法。在 tr 中添加一个 ID 会更好:

  • 用户将鼠标悬停在行上时不会看到标题工具提示
  • javascriptid 选择器比属性选择器快得多,因此如果您要处理大量行,使用 id 总体上会更快。

Vijay 是正确的,title 周围的双引号导致选择器出现问题。我已经更新了我的答案。

您需要从表达式的标题中删除双引号

fld_ID = $('tr[title="Grp2"] td[title="ID"]').text() ;

工作fiddle:http://jsfiddle.net/3y0t8y90/