0

我坚持使用我的小型 jQuery 脚本。我想为特定表的行制作复选框。这将是一个greasemonkey 脚本,所以我无法编辑该站点的源代码。

这是 HTML 的设置方式:

<html>
  <head></head>
  <body>
     <table class = test1></table>
     <table class = test2></table>
     <table class = goal>
       <thead>
         some some <tr> 
       </thead>
       <tbody>
         here are the table rows where I want to put the checkboxes
       </tbody>
     </table>
  </body>
</html>

问题是,将复选框放在每个“tr”的行中,它可以在所有表​​中找到。最后是我的代码:

var $ = unsafeWindow.jQuery

$(document).ready(function (){
  $("table.goal").ready(function(){
    $("tbody").ready(function(){
      $("tr").prepend('<td><input type="checkbox" name="x" value="y"></td>');
    });
  });
}); 

拜托,有人会很好地解释我,为什么这不能按预期工作?提前致谢。

4

5 回答 5

1

不需要使用table.ready/tbody.ready,你必须使用descendant-selector

$(document).ready(function () {
    $("table.goal tbody tr").prepend('<td><input type="checkbox" name="x" value="y"></td>');
});

演示:小提琴

注意:如果行是动态创建的,则需要在创建 tr 后执行 dom 操作

于 2013-10-07T10:02:25.717 回答
0
Hope this might help you... :)  

    $(.goal tr).prepend('<td><input type="checkbox" name="x" value="y"></td>');
于 2013-10-07T10:12:22.537 回答
0

尝试

$("tbody tr").prepend('<td><input type="checkbox" name="x" value="y"></td>');

它应该省略thead。

于 2013-10-07T10:07:16.023 回答
0
function AddCheckboxToTable($table) {
    var $thead = $table.find('> thead');
    var $tbody = $table.find('> tbody');

    $thead.find('> tr').prepend('<th>Checkbox</th>');
    $tbody.find('> tr').each(function(index, element) {
        var $tr = $(element);
        $tr.prepend('<td><input type="checkbox" name="checkbox" value="'+index+'">   </td>');
    });
};

$(function() {
    AddCheckboxToTable($('table.goal'));
});

看到这个小提琴:http: //jsfiddle.net/dYAkJ/

于 2013-10-07T10:14:29.577 回答
0

尝试这个,

$(document).ready(function (){
    $("table.goal tbody tr").each(function(){
       //check if a checkbox is already added or not
       if($(this).find('td:eq(0) > input[type="checkbox"]').length)
       {
          $(this).prepend('<td><input type="checkbox" name="x" value="y"></td>');
       }
    })
}); 
于 2013-10-07T10:02:54.057 回答