if语句执行多次

时间:2017-01-28 17:22:13

标签: javascript jquery

我有一个容器元素被多次加载以通过Ajax请求在click事件上显示变量内容,并且在ajax完成后我调用了一些函数,包括if语句中的函数(A)。

我的问题是,当函数(A)最终被调用时,它会被多次调用,具体取决于在if语句为真之前容器的加载次数。

以下是我的代码的简单版本:

$(".button").on("click", function(){
  loadContainer();
});

var loadContainer = function(){
  $(".container").load(url, function(){
    var x = $(".x");
    if(x.length>0){
      A();
    };
  });
};

x是一个元素$(".x"),它将被加载到容器中,而函数(A)只应在加载该元素时被调用。即$(".x").length>0

如果(x.length> 0)在加载容器3次后为真,则函数(A)将被调用3次。

有没有办法绕过这个或者确保函数(A)只被调用一次?

编辑: 我的完整代码:

    ajaxBtn.on("click", function(e) {

        loadContainer(url, curtain, mainContainer, body, links);
   });
var loadContainer = function(url, curtain, maincontainer, body, links) {

        $(".main-container").load(url + " .main-container  > *", function() {
            $("#logo").css({
                "z-index": "400"
            });

            mainFun();
            curtain.removeClass("full");
            links.removeClass("here");
            body.removeClass("no-scroll");
            clearInterval(timer);
            getFlexIndex();
            position = 0;

            if (vidContainer.length > 0) {
                youTubeLazyLoad();
            }
        });
};

请假设所有变量都已定义。

1 个答案:

答案 0 :(得分:1)

听起来你多次添加相同的按钮点击监听器

你应该调查一下这是怎么发生的,因为我们没有足够的东西知道为什么。它是否嵌入在另一个事件处理程序中?或者在一个被多次调用的函数中?

解决方法是在添加新的

之前删除点击侦听器

更改

$(".button").on("click"... 

$(".button").off('click').on("click"...