0

私はasp.netでディスカッションパネルを開発しています.javascriptを使っていくつかのスパンを描いています

$("#commenttr").after("<tr id="+i+"><td class=\"labelPortion\"></td><td class=\"controlPortion\">" +out[i]+ "</td><td><span style = \"cursor:pointer\" class = \"plblAgreeComment\" id = \"" + ids[i+1] + "\"> Vote Up </span> <span style = \"cursor:pointer\" class = \"plblDisAgreeComment\" id = \"" + ids[i+1] +"\">Vote Down </span><span id = \"ptxtAgreeComment\" >"+ agrees[i+1] + " </span></td></tr>");

しかし、jquery関数を呼び出すとき

$(".plblAgreeComment").click(function(){
    alert("hi");
}

動いていない。私を助けてください。

4

5 に答える 5

3

説明

イベントを動的に作成されたhtmlにバインドするには、jQuery.live()またはメソッドが必要です。.on()

使用しているjQueryのバージョンに応じて選択し.live()ます。.on()

.live()jQuery1.3以降で使用可能です。現在および将来、現在のセレクターに一致するすべての要素にイベントハンドラーをアタッチします。

.on()jQuery1.7以降で使用可能です。選択した要素に1つ以上のイベントのイベントハンドラー関数をアタッチします。

サンプル

$(".plblAgreeComment").live('click', function(){
     alert("hi");
});

$(".plblAgreeComment").on('click', function(){
     alert("hi");
});

詳しくは

更新:jsFiddleデモンストレーション

于 2012-04-16T18:37:16.537 に答える
2

onこれらのアイテムをDOMに動的に追加するため、jQueryを使用します

 $(function(){
    $("body").on("click",".plblAgreeComment",click(function(){
            alert("hi");
    });
  });

on現在の要素と将来の要素で機能します。

http://api.jquery.com/on/

onjQuery 1.7以降で利用可能です。古いバージョンのjQueryを使用している場合は、live http://api.jquery.com/live/を確認する必要があります。

于 2012-04-16T18:38:11.827 に答える
0

.on以下の構文で使用してみてください。

$(document).on('click', '.plblAgreeComment', function(){
    alert("hi");
});

上記のコードでは、ドキュメント選択の代わりにテーブルセレクターを使用します。

于 2012-04-16T18:38:35.763 に答える
0

動的に挿入された DOM 要素にイベントをバインドする場合は、onメソッドを使用して、新しい要素がそのイベント リスナーにバインドされるようにする必要があります。

 $(".plblAgreeComment").on("click", function(){
    alert("hi");
 }

live()注:同様の効果を達成するなどの他の方法がありますがon、すべてのシナリオでこの状況を処理する を優先して廃止されています。

于 2012-04-16T18:42:33.497 に答える
0

行のhtmlを生成するときに、クラス名に余分な文字が含まれる場合があります。

class = \"plblAgreeCom 

多分そうあるべきです:

class =\"plblAgreeCom 

または、DOM が変更される前にクリック ハンドラーをアタッチしている場合:

 $(".plblAgreeComment").click(function(){
        alert("hi");
}

次のようにする必要があります。

 $(".plblAgreeComment").live("click", function(){
        alert("hi");
}
于 2012-04-16T18:40:17.353 に答える