1

ASP.NET Web サイト内で JQuery を使用すると問題が発生します。一般的なクリック ハンドラーを複数の同様の要素 (ASP.NET に精通している場合は ListView を介して生成) にバインドしたいと考えています。私の仮定は、次のようにクラスセレクターを使用することでした(例として):

$('.standard-group').click(function () {
    alert($(this).attr("id"));
});

これは、このクラスを持つ一連の div に関連しています。

<div class="standard-group">
    some content
</div>

<div class="standard-group">
    some other content
</div>

さらに、コンテンツは ContentPlaceholder 内で生成され、マスター ページ (実際には 2 つのネストされたマスター ページ) にマージされます。<script></script>ページのセクションにコンテンツを挿入する 2 番目の ContentPlaceholder 内のタグの間にクリック ハンドラーを配置<head>しようとしましたが、メインの ContentPlaceholder にコンテンツを配置しようとしましたが、すべて役に立ちませんでした。結局、生成されたページが正しく読み込まれ、ソースを調べてそこで関数を確認できますが、イベントは発生しません。マスターページ/サーバー処理シナリオに関係していると思われますが、特定できません。

そこに何か助けはありますか?

4

2 に答える 2

1

クリックイベントをdocumentwithに委譲するon()

 $(document).on('click','.standard-group',function () {
    alert($(this).attr("id"));
});

詳細を読むためのリンクon()

于 2013-04-05T06:10:46.133 に答える
1

イベントを追加するためのスクリプトは、要素が作成される前に実行される可能性があります。 on()を使用して、イベントをドキュメントに委任できます。

$(document).on('click', '.standard-group', function () {
    alert($(this).attr("id"));
});

委任されたイベント

イベント ハンドラーは、現在選択されている要素にのみバインドされます。これらは、コードが .on() を呼び出す時点でページに存在している必要があります。要素が存在し、選択できることを確認するには、ページの HTML マークアップにある要素のドキュメント対応ハンドラー内でイベント バインディングを実行します。新しい HTML がページに挿入されている場合は、要素を選択し、新しい HTML がページに配置された後にイベント ハンドラーを添付します。または、次に説明するように、委任されたイベントを使用してイベント ハンドラーをアタッチします。参照

于 2013-04-05T06:11:31.993 に答える