0

jquery で動作しないボタンがあります。ボタンは、json オブジェクトを使用して php から Jquery に渡されます。これを試して解決するためにテストするボタンだけを他のすべてのコードを削除しました。同じリンクを作成し、php で自分のページに配置します。リンクをクリックすると、アラートが表示されて機能します。

同じページに同じボタンである追加のボタンがありますが、このボタンは PHP から json 経由で Jquery に返され、div に追加されています。このリンク/ボタンは機能しませんか? どうしてこれなの?どちらも同じに見えます!

ここで何が起こっているかについて誰かがアドバイスできることを願っています

ありがとう

PHP から返されたボタン

   //Jquery basic test button for functionality (works if link button is already on HTML page)
    $("[href='#test']").click(function() {      
    alert("has been clicked");
    });

//JQuery extract of my code 

var content;
$.each(data, function(i, item) {
content += item;

});
$(content).appendTo('#theframe');
},'json');  

も試しました

$.each(data, function(i, item) {
content += item;

});
$('#theframe').html(content);
},'json');




//php returned
$json[] = '<a href="#test">View Post</a>';
echo json_encode($json);

//php button on page
<a href="#test">View Post</a>

ありがとう

すべての投稿の助けを借りて解決しました、ありがとう! @Anthony の例では、フレーム $('#theframe').on('click', '[href="#test"]', function(e) { alert('has been clicked'); }); が追加されました。

4

3 に答える 3

3

jQuery の on() または delegate() 関数を使用して、(ページが読み込まれた後に) 動的に追加される新しいページ要素にクリック イベントを追加する必要があります。

jQuery 1.7 以降を使用している場合は、on() を使用する必要があります: http://api.jquery.com/on/

古いバージョンの jQuery を使用している場合は、次のデリゲートを使用してください: http://api.jquery.com/delegate/

于 2012-04-09T12:32:10.583 に答える
1

この.click()関数は、コードの実行時に存在する要素にのみイベント ハンドラーを追加するため、後で動的に追加される要素には影響しません。.on()これを回避する最も簡単な解決策は、 (jQuery 1.7+) または.delegate()(1.7 より前) 関数を使用して、イベント委任を設定することです。例は次の.on()ようになります。

$('body').on('click', '[href="#test"]', function(e) {
    alert('has been clicked');
}); 
于 2012-04-09T12:33:29.173 に答える
1

機能しない理由は、ドキュメントの準備完了関数が 1 回しか起動しないためです。これは、2 番目のボタンが ajax 経由で読み込まれた後、イベント ハンドラーが関連付けられていないことを意味します。

「on」または「live」を使用してみてください。

$("body").on("click", a[href="#target"], function(event){
alert("has been clicked");
});

http://api.jquery.com/on/ <-「オン」のドキュメント

http://api.jquery.com/ <- あなたの新しいお気に入りのウェブサイト!

お役に立てれば!

于 2012-04-09T12:33:50.287 に答える