使用ajax加载后,youtube spf无法正常工作

时间:2017-02-27 07:21:51

标签: javascript jquery ajax

在我的网页上,一切都很好。

我的js工作得非常好,但点击任何页面,页面加载ajax但是某些功能不起作用,例如我的bootstrap轮播或我的parallax.js插件..

我该如何进行活动管理?

我正在使用youtube spf plugin

我页面上的一些js例子

if (!$(".scene").length) return false;
 var q = document.getElementsByClassName("scene")[0];
 var r = new Parallax(q, {
  calibrateX: false,
  calibrateY: true,
  invertX: false,
  invertY: true,
  limitX: false,
  frictionX: .2,
  frictionY: 4,
  originX: 0,
  originY: 1
 });

$('.img-area').cycle({
      fx:     'fadeout',
      speed:   950,
      timeout: 100
  }).cycle("pause");

$(".otel-history-list").on("click",function(){


    var historyName = $(this).find(".history-current-name").text();
    var historyDateIn = $(this).find(".history-current-datein").text();
    var historyDateOut = $(this).find(".history-current-dateout").text();
    var historyKisi = $(this).find(".history-current-kisi").text();

    $(".input-form-ara input").val(historyName);
    $(".otel-giris-cikis #checkin").val(historyDateIn);
    $(".otel-giris-cikis #checkout").val(historyDateOut);
    $(".kisi-sayi-otel-sec .kisi-count").text(historyKisi);
  });

或类似这些代码

和我的ajax代码

$(function () {
    spf.init();
    NProgress.configure({ showSpinner: false });

    $(document).on('spfrequest', function (event) {
        NProgress.set(0.4);
    });

    $(document).on('spfprocess', function (event) {


        NProgress.set(0.6);
        NProgress.set(0.8);



    });



    $(document).on('spfdone', function (event) {

        NProgress.set(1.0);
        NProgress.done();



    });

    $(document).on('spfhistory', function (event) {

        NProgress.set(0.7);
        NProgress.set(0.9);
        NProgress.set(1.0);
        NProgress.done();

    });
});

我正在使用bootstrap,parallax.js,cycle2.js,select2 plugin

1 个答案:

答案 0 :(得分:1)

我过去曾回答过类似的问题,所以我在下面重申:

  1. 我不确定你的完整代码集是什么,但根据你发布的内容,我猜你的几个html元素(附有JQuery事件处理程序)都会生成并重新生成在加载原始DOM之后,可能会多次使用您的ajax函数生成。

  2. 这是您在Ajax代码触发后不会触发某些事件的最可能原因。当使用Ajax以编程方式(重新)生成这些元素时,附加到html元素(例如div)的事件处理程序会“分离”。

  3. 因此,你想要做的是将事件处理程序“附加”到DOM树中的更高级别(最高的是你的html),你肯定不会“以编程方式”重新生成,那么你想要检查是否存在DOM内部的元素。然后在找到此元素时运行您的函数。

  4. 举个例子,你的代码中有这个onclick函数:

    $(".otel-history-list").on("click",function(){
    //your actions
      });
    

    具有类“otel-history-list”的元素很可能是在页面加载后由Ajax调用生成或重新生成的,因此会从onclick事件侦听器中分离出来(参见上面的#1-#2)。

    因此,要在上面的#3之后重写代码,你需要将事件监听器附加到Ajax不会重新生成的东西,然后只查找其中包含您感兴趣的类的特定元素。 :

    $(document).on("click",".otel-history-list", function(){
        //your actions
          });
    

    希望这有帮助!