1

そのため、ajax経由でx行のデータがロードされています。各行の最後に、何かを行うためのクリック ハンドラーを持つ編集ボタンを追加しています。

$newTr.append(
    $("<img/>", {
        title: "edit task",
        "class": "edit clickable changeTask",
        src: "../../images/edit.png"
    })
)

クラスにクリック ハンドラーをアタッチする必要があります。

$(document).on("click", ".changeTask", function(){ //do stuff

または、各画像に添付する必要があります:

$newTr.append(
    $("<img/>", {
        title: "edit task",
        "class": "edit clickable changeTask",
        src: "../../images/edit.png",
        click: function() {
            //do stuff
        }
    })
)

注: これは厳密にはパフォーマンスの問題です。どちらの方法も機能します。また、この種のことを自分でテストする方法を指摘していただければ幸いです。

4

1 に答える 1

6

あなたの言葉では、「それをクラスに添付する」方が速いでしょう。

実際に行っているのは、イベントバブリングを利用して、document任意の要素で発生するイベントをリッスンする単一のハンドラーをにアタッチすることです。.changeTask

これは、それぞれ に個別のイベントハンドラーをアタッチする2番目の例とは異なります<img />

ここでヒットする可能性のある唯一のパフォーマンスは、何千ものclickイベントを発生させている場合です。これは、のハンドラーがdocument各イベントを検査して、関連性があるかどうかを確認する必要があるためです。可能であれば、ハンドラーを要素のできるだけ近くにアタッチします(ごみをフィルター処理する必要が少ないため)。 これは、99.99999%の状況では関係ありません。

于 2013-01-08T15:25:48.003 に答える