0

セルのテーブルがあり、セルをクリックするとイベントがトリガーされます。セルを動的に追加したいので、すべての行で OnClick を再度呼び出します。OnClick を 2 回目に呼び出すと、OnClick が 2 回呼び出されたセルはイベントの発生を停止します。

奇妙なことは、「戻る」ことができれば、OnClick 関数のイベントにあります。動作しますが、「Return」が定義されていないというエラーがスローされます

function initBox() {
    $(".selectable").on('click', function (event) {

        //if its selected already, unselect it
        if ($(this).hasClass('rowHighlightColor')) {
            $(this).removeClass("rowHighlightColor");
            selectedCellList = null;
        }
        else {
            //unselect previous cell
            if (selectedCellList != null) {
                selectedCellList.removeClass("highlighted");
            }
            selectedCellList = $(this);

            $(this).addClass("rowHighlightColor");
        }
        Return;
    });
}
4

2 に答える 2

7

(大文字のR)returnの代わりにする必要がありますReturn

ただし、書き込みreturn;は返すundefinedので、省略できます。

編集:

イベントを 2 回アタッチする場合は、必ず 1 回だけアタッチしてください。そうしないと、(お気づきのように) クラスをアタッチしてすぐに再度削除するなどの望ましくない動作が発生します。

「戻る」で機能する理由は、関数に到達するとエラーがスローされるため、関数が 1 回しか実行されないためです。

jQuerys .live()(または.on()新しいバージョンの場合、ライブは廃止されているため) を使用して、追加するすべての新しい行にクリック イベントを自動的に添付します。jQuery ライブ ドキュメント

于 2012-06-13T13:26:56.983 に答える
1

複数のイベント ハンドラーを既存のセルに追加しています。.onclickこれが、単純な古いプロパティのみを使用することを好む理由の 1 つです。

とにかく、この問題を解決するには、イベントを新しいセルにのみ適用するか、イベントを追加するときに属性を追加してから、イベントを再度追加する前にその属性を確認します。

于 2012-06-13T13:28:30.370 に答える