我已经用别人的答案来解决这个问题。
Jquery的:
$("input:checkbox:not(:checked)").each(function() {
var columnName = $(this).attr('name');
$('td:nth-child(' + columnName + '),th:nth-child(' + columnName + ')').hide();
});
$("input:checkbox").click(function() {
var columnName = $(this).attr('name');
$('td:nth-child(' + columnName + '),th:nth-child(' + columnName + ')').toggle();
});
HTML:
<input type="checkbox" name="1" checked="checked"/>
当我将值放在:nth-child(1)中时它起作用,但是当我包含变量时它不起作用。我做错了还是使用了错误的Jquery库。
任何帮助将不胜感激!
答案 0 :(得分:4)
我猜你有一个或多个<input type="checkbox" />
name
属性不一个数字,或者不存在。
例如:
<input type="checkbox" name="string" />
使用您的代码时,会输出您所描述的错误:
Uncaught Error: Syntax error, unrecognized expression: :nth-child
解决方法是检查columnName
是否为有效数字:
var columnName = $(this).prop('name') || '0';
if (columnName.match(/^[1-9]\d*$/)) {
// columnName must start with a number between 1 to 9
// and can be proceeded by zero or more numbers only
}
此外,最好将class
分配给用于show/hide
相应td/th's
的复选框。
<input type="checkbox" class="showHide" name="1" />
这样,您只需选择/循环所需的元素,而不是页面上的每个复选框。
$('input.showHide').click(function() { ... });