2017-05-10 99 views
0

這個JQuery腳本在正常網頁打開時工作良好。內容加載AJAX後Jquery無法正常工作

但是在AJAX的結果中,這個jquery函數不起作用。

<script> 
$(".box").each(function(){ 
    var value = parseInt($(this).data("value")); 
if (value == 1) 
    var color = "red"; 
else if (value == 2 || value == 3) 
    var color = "yellow"; 
else 
    var color = "green"; 
for (var i = 0; i < value; i++) 
$(this).after("<div class='newBox' style='background:"+color+"'></div>"); 
}); 
</script> 

如何使這個腳本在AJAX結果中可行?

這是AJAX的Jquery:

jQuery(document).ready(function($) { 
$('#test .br').click(function() { 
var choices = {}; 
console.log(choices); 
$.ajax({ 
    url: ajaxobject.ajaxurl, 
    type: 'POST', 
    data: { 
     'action': 'call_post', 
     'choices': choices, 
    }, 
    success: function(result) { 
     $('.filter-output').append(result); 
    } 
}); 
}) 
}); 

請點擊這裏Server Link

+0

* jQuery函數不工作*什麼行不通你能指望什麼是發生在阿賈克斯 – guradio

+0

@guradio導致這不能顯示彩色包裝盒..但通常網頁這項工作 – FRQ6692

+0

把裏面的代碼文件準備好以及 – guradio

回答

1

正如我在評論中提到$(".box").each(function(){ });只會在頁面加載時運行。所以它不會在ajax成功後運行。所以需要在ajax成功後再次運行,或者您可以將其作爲函數並在每次Ajax成功時調用。這樣

 <script> 

    jQuery(document).ready(function($) { 

    function color() 
    { 
     $(".box").each(function(){ 
      var value = parseInt($(this).data("value")); 
     if (value == 1) 
      var color = "red"; 
     else if (value == 2 || value == 3) 
      var color = "yellow"; 
     else 
      var color = "green"; 
     for (var i = 0; i < value; i++) 
     $(this).after("<div class='newBox' style='background:"+color+"'></div>"); 
     }); 
    } 

    color(); //called on page load 


    //ajax 


     $('#test .br').click(function() { 
       var choices = {}; 
       console.log(choices); 
       $.ajax({ 
        url: ajaxobject.ajaxurl, 
        type: 'POST', 
        data: { 
         'action': 'call_post', 
         'choices': choices, 
        }, 
        success: function(result) { 
         $('.filter-output').append(result); 
         color(); //call the function again here 
         ^^^^^^^ 
        } 
       }); 
     }); 
    }); 
    </script> 
+0

現在這項工作只適用於Ajax,不適合簡單的頁面加載。請檢查[服務器鏈接](http://www.cbleu.net/sites/farooq/tablet/) – FRQ6692

+0

您需要兩次調用此函數1)在頁面加載color(); //在頁面加載時調用2)ajax成功後。 – JYoThI

+0

確實注意到,在函數結束時,我調用了這個函數的功能color(){...} //函數聲明color(); //函數調用@FRQ – JYoThI

0

試試這個

變化 - >點擊上點擊。 $(「#測試.BR」)。點擊(函數(){

jQuery(document).ready(function($) { 
$(document).on('click', '#test .br', function() { 
var choices = {}; 
console.log(choices); 
$.ajax({ 
    url: ajaxobject.ajaxurl, 
    type: 'POST', 
    data: { 
     'action': 'call_post', 
     'choices': choices, 
    }, 
    success: function(result) { 
     $('.filter-output').append(result); 
    } 
}); 
}) 
}); 
2

我猜你是改變每個.box項目當頁面負載,並且需要在阿賈克斯的結果再次修改。

如果這時,你可以把它作爲一個函數,並調用它在你的Ajax的success一部分,並在您的$(document).ready

function alterBox(){ 
     $(".box").each(function(){ 
     var value = parseInt($(this).data("value")); 
     if (value == 1) 
      var color = "red"; 
     else if (value == 2 || value == 3) 
      var color = "yellow"; 
     else 
      var color = "green"; 

     for (var i = 0; i < value; i++) 
      $(this).after("<div class='newBox' style='background:"+color+"'></div>"); 
    }); 
} 

成功參與你的Ajax代碼:

success: function(result) { 
    $('.filter-output').append(result); 
    alterBox(); 
} 
+0

現在這項工作只適用於Ajax,不適合簡單的頁面加載。請檢查[服務器鏈接](http://www.cbleu.net/sites/farooq/tablet/) – FRQ6692

+0

您是否也將該函數放入'jQuery(document).ready'? –