2015-06-18 81 views
1

jQuery在打開頁面時工作正常。但是,當產品通過AJAX加載(更改)時,jQuery不起作用。我已經使用jQuery的1.7.1.min.js當通過AJAX加載產品時,jQuery不起作用

$(document).ready(function() { 
    $screensize = $(window).width(); 
    if ($screensize > 1199) { 
     $('#content .product-grid > div:nth-child(3n)').after('<span class="clearfix visible-lg-block"></span>'); 
    } 
    if ($screensize < 1199) { 
     $('#content .product-grid > div:nth-child(3n)').after('<span class="clearfix visible-lg-block visible-md-block"></span>'); 
    } 
    if ($screensize < 991) { 
     $('#content .product-grid > div:nth-child(3n)').after('<span class="clearfix visible-lg-block visible-sm-block"></span>'); 
    } 
}); 

我怎樣才能解決這個問題?

我試着下面的代碼。所以,它正在工作。但是,有時不起作用。

$(document).on('ajaxComplete ready', function(){ 
    // FUNCTION CODE 
}); 
+1

你需要調用代碼段上'success' Ajax回調,一旦元素被添加到DOM:'$阿賈克斯({成功:resizeMethod,...});'而對文件準備撥打: '$(resizeMethod);'。其中'resizeMethod'是包裝你的片段的方法(減去準備好的hanlder) –

+0

那麼,你的函數在文檔準備就緒時被調用。你必須在更改頁面時調用它 – wonderb0lt

+0

@ A.Wolff我認爲你的意思是'$(document).ready(resizeMethod);''而不是'$(resizeMethod);' – RuubW

回答

2

製作一個方法,並在DOM加載和AJAX完成時調用它。

$(document).ready(function(){ 

var resizeMe = function() { 
    $screensize = $(window).width(); 
    ... Do what you want here 
}; 

$.ajax({...}).done(function() { resizeMe(); }); 

resizeMe(); 
}); 
+0

我試過這個,但是,不適合我。請提供任何其他建議。謝謝。 – HarnishDesign

+0

謝謝@Rune FS。 –

相關問題