3

I've used someone else's answer to get this.

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"/>

It works when I put values in the :nth-child(1) but not when I include the variable. Am I doing it wrong or am I using the wrong Jquery library.

Any help would be appreciated!

4

1 に答える 1

5

属性が数値ではない<input type="checkbox" />、または存在しない場所が1つ以上あると思います。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/hidetd/th's

<input type="checkbox" class="showHide" name="1" />

そうすれば、ページ上のすべてのチェックボックスではなく、必要な要素のみを選択/ループします。

$('input.showHide').click(function() { ... });
于 2013-06-07T10:13:21.413 に答える