【问题标题】:get table row data on checkbox check在复选框检查中获取表格行数据
【发布时间】:2016-10-18 04:01:54
【问题描述】:

编辑:我想改写我的问题

我很简单地尝试在复选框检查时在<td> 中获取锚标记文本。
问题是锚标签没有id或class

这是我的表格示例

<table class="wp-list-table widefat fixed striped users">

 <tbody id="the-list" data-wp-lists="list:user">

  <tr id="user-18">
   <th scope="row" class="check-column">
    <label class="screen-reader-text" for="user_18">Select abc</label>
    <input type="checkbox" name="users[]" id="user_18" class="subscriber" value="18">
   </th>


   <td class="username column-username has-row-actions column-primary" data-colname="Username">

    <a href="#">abc</a>
   </td>
</table>

我搜索了一些帖子并尝试创建一些功能

<script type ="text/javascript">
 $('#changeit').click(function(){

        var values = [];
        $(".wp-list-table input[name='users[]']:checked").each(function(){
            row = $(this).closest("tr");

        });

        alert($(row).find("a")[0]);




    });

</script>

这给了我锚标签href数据,但我需要锚标签中包含的文本。

我试过了

alert($(row).find("a")[0].text());
alert($(row).find("a")[0].val());
alert($(row).find("a")[0].val);

但他们没有给我锚标记文本。

任何建议都会有所帮助。

【问题讨论】:

  • 我猜你需要在名称选择器中使用引号,例如input[name='users[]']
  • 谢谢,它帮助我进入了检查事件,但我仍然无法在 的 中获取元素值
  • 在这个find("input[name=Username]") 中,您又缺少引号,我看不到任何名称为“用户名”的输入。如果您确定它能够存储数组,您可以放置​​一个 console.log(values) 而不是多个 alerts 吗?并检查浏览器开发者控制台?

标签: javascript jquery html checkbox


【解决方案1】:

试试这个:

 function Bindthis() {
        $('#changeit').on('click', function() {
            alert('1'); //this is hitting
            var values = [];
            $('.subscriber').attr('checked', true).each(function() {
                alert('2');
                row = $(this).closest("tr");
            });
        });
    }

【讨论】:

    【解决方案2】:

    这很容易通过遵循一些良好的编码实践来追踪。

    首先,您的代码需要缩进良好。如果你想编写好的、干净和无错误的代码,缩进是必须的。没有错误,因为缩进有助于识别不同的范围。

    其次,始终寻找日志。我知道您不查找日志是因为您使用 alert() 而不是 console.log(),而且,如果您使用代码打开控制台 (F12),您会注意到此错误:

    Uncaught Error: Syntax error, unrecognized expression: #the-list input[name=users[]]:checked
    

    有了这个,就很容易理解选择器语法错误了。在互联网上搜索了一下并了解了选择器,您会注意到语法需要一些引号,例如 #the-list input[name='users[]']:checked

    似乎您不太了解选择器的工作原理,因此,为了避免这个问题和未来的问题,我建议您阅读一些有关它们的信息。这样,您将避免在此处重复相同的选择器问题。这是一个很好的参考网站,带有在线测试人员:http://www.w3schools.com/cssref/css_selectors.asp

    【讨论】:

    • 谢谢。我知道控制台的使用,但不知道用户的单引号
    • @NeerajVerma 是的,我看到了你的编辑。现在您正在选择带有“name”属性的“input”,但是您有一个带有“data-colname”属性的“td”。如果您真的不知道发生了什么,请查看我的链接以更好地理解它。了解选择器会对你有很大帮助。
    【解决方案3】:

    最后我编写了这段代码,它对我有用

     $(".wp-list-table input[name='users[]']:checked").each(function(){
                row = $(this).closest("tr");
                anchor  = $(this).closest('tr').find("a:first");
    
    
            });
            alert($(anchor).text());
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签