如果我使用$ .post(...),$ .get(...)或其他东西收到ajax响应。
收到的回复是一个html格式文档,包含jQuery插件。
我知道jQuery插件需要在ajax响应后重新初始化。 像这样的东西
$.get('<ajaxurl>').done(function(response){
$('#some_element').html(response);
$('#element1_in_some_element').init_plug_in_1();
$('#element2_in_some_element').init_plug_in_2();
$('#element3_in_some_element').init_plug_in_3();
$('#element4_in_some_element').init_plug_in_4();
....
});
但是在ajax调用之后是否可以重新初始化所有插件?
像这样$.get('<ajaxurl>').done(function(response){
$('#some_element1').html(response);
$('#some_element1').init_plug_in_all();
});
!!
答案 0 :(得分:3)
如果您绑定到文档,它应该允许您在页面上动态添加自动应用插件的元素。
例如
$('.datePickers').datepicker();
只会触发文档加载,任何带有“datePickers”类的NEW元素都不具备可用的功能。
但如果你这样附上......
$(document).on('load','.datePickers', function() {
$(this).datepicker();
});
它将适用于所有带有datePickers类的元素,甚至是通过AJAX添加的元素
答案 1 :(得分:1)
如果你创建了一个初始化插件的函数,你可以在ajax调用结束时调用该函数来重新初始化所有插件。这没有什么标准,一切都取决于你的插件和初始化器。考虑这样的事情:
var initializePlugins = function() {
$('selector').datepicker();
$('selector2').fullcalendar();
$('selector3').jScrollPane();
};
// when ajax done
$.ajax().done(function() {
initializePlugins();
});
// when the DOM is ready
$(document).ready(function() {
initializePlugins();
});
答案 2 :(得分:1)
如果您需要$('#some_element1').init_plug_in_all();
,那么可以编写插件。
$.fn.init_plug_in_all = function(plug_1, plug_2, plug_3, plug_4){
this.each(function() {
plug_1 && $(this).init_plug_in_1();
plug_2 && $(this).init_plug_in_2();
plug_3 && $(this).init_plug_in_3();
plug_4 && $(this).init_plug_in_4();
});
};
然后使用: -
$('#some_element1').init_plug_in_all(true, false, false, true);
$('.some_class').init_plug_in_all(false, false, true, true);
//etc