DOM要素(Ajaxレスポンスなど)を挿入した後にイベントを機能させるには、イベント委譲を使用する必要がありますが、基本的なJS命令はどうですか?DOM要素を挿入した後、非イベントのjavascript命令を動作させる方法は?
すべての指示は、影響を受けるPHPページで並べ替えられています(コードをより簡単に更新および改善し、同じ指示を何度も繰り返さないように)。 ここでは、あるクラスが存在するかどうかをテストしたいと思います。このクラスは、JSファイルがロードされても存在しませんが、AJAXレスポンスを挿入した後になります。
コード例
// NAVBAR.PHP
if ($('.className').length) {
$('.button-navbar').show(); }
/* FOOTER.PHP
.... */
// VIEW_NEWS.PHP
$('.ajax_wrapper').on('click', '#view_news tr', function() {
var id = $(this).attr("id");
var get_news_request = $.ajax({type: "GET", url: "view_news.php", data: {news_id: id}, dataType: "html"});
get_news_request.done(function(html) {
$('.ajax_wrapper').hide('slide', {direction: 'right'}, function(){
$('.ajax_wrapper').empty();
$('.ajax_wrapper').hide().html(html);
$('.ajax_wrapper').show('slide');
});
});
get_news_request.fail(function(jqXHR, textStatus, errorThrown) {
alert("Request failed: " + textStatus + " " + errorThrown);
});
});
クラスが今存在しているのに対し、残念ながら、
if ($('.className').length) {
$('.button-navbar').show(); }
は、実行されていないようです。
JSファイルアーキテクチャを壊さないソリューションがありますか?
「firefox」コンソールを使用してこのページをテストしてください。コードの前にいくつかのjsエラーがあります。if($。 'className')length { $( '。button-navbar') .show(); } 'が実行されます。 –
エラーは表示されません。コンソールでこの命令を実行するとNavbarボタンが表示されます(Ajaxレスポンスを挿入した後はもちろんです)。 – b1onic