我坚持使用我的小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>');
});
});
});
拜托,有人会如此友善地解释我,为什么这不按预期工作? 提前谢谢。
答案 0 :(得分:1)
无需使用table.ready / tbody.ready,您必须使用descendant-selector
$(document).ready(function () {
$("table.goal tbody tr").prepend('<td><input type="checkbox" name="x" value="y"></td>');
});
演示:Fiddle
注意:如果动态创建行,则需要在创建tr之后执行dom操作
答案 1 :(得分: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>');
}
})
});
答案 2 :(得分:0)
试
$("tbody tr").prepend('<td><input type="checkbox" name="x" value="y"></td>');
它应该省略thead。
答案 3 :(得分:0)
Hope this might help you... :)
$(.goal tr).prepend('<td><input type="checkbox" name="x" value="y"></td>');
答案 4 :(得分: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/