2017-03-28 21 views
-1

我得到一個元素,它根據點擊的塊加載數據。看起來javascript在ajax調用後不識別新元素

使用Ajax我發送一個變量後,在我的索引中加載一個完整的phpfile。

例如:

1座被點擊時,$塊(包含字符串:塊1)發送到我的PHP腳本,我把$塊在我的查詢檢索正確的數據。之後,我在我的索引中加載結果。

這可以正常工作,但所有的javascript功能都被打破。當我在我的索引中添加php腳本並且不使用ajax檢索它時,而是手動添加這個詞($ block通常會是這樣),所有javascript都可以正常工作。

所以看起來當結果加載時,javascript已經完成或者不能識別它。我該如何解決這個問題?

我的代碼,我檢索:

$('.handmouse').on('click', function(e){ 
     var alias = $(this).attr("data-attribute"); 
     var clicked = true; 
     $.post("ajax/blokken.php", { 
      dienstnaam : alias 
     }, function(data) { 
      $(".tabwrapper").html(data); 
     }); 
     $('.tabwrapper').slideToggle(); 
     if(clicked != true){ 
      $('html, body').animate({ 
       scrollTop: $(".tabwrapper").offset().top 
      }, 2000); 
     } 
    }); 
+0

您應該將*阿賈克斯*通話將被執行之前** ** Ajax調用完成後 – binariedMe

+0

做的一切Ajax調用的成功回調裏面的一切。那是因爲Javascript不是** async **。如果您想在* ajax *完成加載後執行某些操作,請將該邏輯放入函數中,然後從* ajax *調用中的'success'方法調用該函數。 – Randy

+0

除此之外,'if(clicked!= true)'永遠不會碰到 –

回答

0

你需要把所有的代碼放到你的Ajax調用,而不是你的後Ajax調用success方法,因爲Ajax調用是異步

$('.handmouse').on('click', function(e){ 
    var alias = $(this).attr("data-attribute"); 
    var clicked = true; 

    $.post("ajax/blokken.php", { 
     dienstnaam : alias 
    }, function(data) { 
     $(".tabwrapper").html(data); 
     $('.tabwrapper').slideToggle(); 
     if(clicked != true){ 
      $('html, body').animate({ 
       scrollTop: $(".tabwrapper").offset().top 
      }, 2000); 
     } 
    }); 
}); 
相關問題