javascript - jquery 选择具有特定属性的表行的语法错误

标签 javascript jquery jquery-selectors

我正在尝试从表行中提取数据以便对其进行更新,但我真的很困惑为什么它没有发生。下面是生成的 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/

相关文章:

javascript - Knockout.js 基本示例 - 是什么导致此数据绑定(bind)失败?

jQuery .hasClass 和动态添加的类

jquery - 如何定义jquery选择器有效id?

javascript - Angular 8 应用程序,当使用片段与标题重叠时

javascript - 无法从 Javascript 中的匿名回调函数将项目插入数组

jquery - 动态交换Youtube视频而无需重新加载页面

jquery - 使用 jQuery 选择最近的 DOM 元素

javascript - 如何将相同的类/id 名称 php 值从单选按钮传递到 javascript?

javascript - jQuery 日期选择器 1927 年格式 dd mm y 问题

Javascript 不适用于 ajax 生成的代码?