是否可以在ajax调用后重新初始化jQuery的all-plugins?

时间:2016-02-08 17:24:11

标签: javascript jquery ajax

如果我使用$ .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();
});

!!

3 个答案:

答案 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