0

我已将以下代码写入 AJAX 以更改选项卡。

  $("a").click(function(event){
      if ($.browser.msie != true && $.browser.version != 8.0){
      event.preventDefault();
      if ($(this).parent().hasClass("current") == false){
        $.ajax({
          url: '/getvideofeed',
          success: function(data) {

            $('.flow').html(data);
            cf._init();


          },

          data: {'playlistid': $(this).attr("pid")}
        });
      $(".current").removeClass("current");
      console.log($(this).parent().addClass("current"));
      }}
    });

当我更改 TAB 时。该cf._init();函数被调用不止一次...意味着当我单击第一个选项卡时,它将被调用两次。当我再次单击下一个选项卡时,cf._init() 函数将被调用三次,依此类推。

cf._init()所以我的问题是ajax调用完成后如何重置函数?cf._init()或每次单击任何选项卡时如何仅调用一次函数。

4

2 回答 2

0

如果 cf._init() 调用不止一次,那么函数 cf._init() 应该在 Ajax 成功时执行,而不是 Ajax 可能被执行了不止一次。

首先,我建议将 async 属性设置如下: async: false

所以 Ajax 调用将等到它完成。这种方式将使您能够多次调试 Ajax 调用是如何进行的。

于 2013-12-02T09:47:19.537 回答
0

首先确保 cf._init() 没有再次调用 ajax ...第二个为什么在 ajax 完成或完成时不调用 init :

 var request = $.ajax({"url":url});
 request.done( function(data){ } );
于 2013-12-02T09:55:21.293 回答