-1

jQueryを使用してphpページに動的コンテンツを追加しています。コンテンツの追加に問題はありませんが、新しいコンテンツをクリック イベントに応答させる方法が見つからないようです。

たとえば、(ここでは div を使用していますが、ボタンまたは他のタイプである可能性があります)。

$("#oldstuff").after('<div id="newstuff">Some content that should respond to click event</div>');

編集:私は現在jquery 1.9.1を使用しています.1.6.2を使用していましたが、新しいjqueryバージョンが必要なmagnific-popupをチェックしています。

失敗した試行を投稿しませんでした (

 $("#newstuff").click(function() {...
 $("#newstuff").live('click', function() {...
 binding the click event, etc.

なぜなら、経験豊富な jQuery ユーザーなら壊れたコードのノイズなしで見つけることができる基本的な何かが欠けていると思ったからです。

4

5 に答える 5

4

要素を DOM に挿入する前に、クリック イベントを添付できます。

$('<div id="newstuff">...</div>').click(function(){ 
  //do something 
}).insertAfter('#oldstuff');
于 2013-07-27T04:42:43.107 に答える
1

新しいコンテンツをクリック イベントに応答させる方法が見つからないようです。

イベント委任を行う必要があります

$("#oldstuff").on("click", '#newstuff',function(){
alert( $(this).text() );
});
于 2013-07-27T04:42:56.350 に答える
0

必要なのは、イベントを親要素に添付することです。

HTML:

<div id="parent">
    <div class="thediv">Hello</div>
</div>

JavaScript:

function addDiv() {
    var div = document.createElement('div');
    div.className = 'thediv';
    document.getElementById('parent').appendChild(div);
}

$('#parent').on('click', '.thediv', function() {
    // ...
});

このテクニックが機能するかどうかを確認してください。

于 2013-07-27T05:40:01.713 に答える
-1

おそらく、DOM をアタッチする前にイベントをバインドしている可能性があります。また、jquery ライブラリの最新バージョンでは live メソッドが非推奨になっているため、DOM をアタッチした後でもクリックをバインドするか、次のコードを使用できます...

最初に DOM を追加します。

    $("#oldstuff").after('<div id="newstuff">Some content that should respond to click event</div>');

そしてイベントをバインドします。

    $('#newstuff').on('click',function(){alert('do your stuff!')}); 

または

    $('#newstuff').click(function(){alert('do your stuff!')}); 
于 2013-07-27T07:34:38.783 に答える
-2

これを試して

$("#yourElementId").live("click",function(){
  alert( $(this).text() );
 });

.clickdomまたは動的に作成された要素をロードした後に機能しない

于 2013-07-27T04:46:51.637 に答える