Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在再次被调用之前取消调用函数_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在再次被调用之前取消调用函数

Javascript 在再次被调用之前取消调用函数,javascript,jquery,ajax,Javascript,Jquery,Ajax,在再次调用被调用函数之前,有什么方法可以取消调用它吗?一旦ajax调用成功,就会加载内容并调用我的函数(就在html(数据)之后),因为在另一种情况下它不起作用。如果我再次加载内容,功能将重复,例如,我的所有警报将显示两次。(如果我打10个ajax电话,我会收到10个警报,而不是一个) 我试着只调用函数一次(在第一次ajax调用之后),但它只在第一次ajax调用时起作用,在另一次调用之后停止工作 在这种情况下,我唯一的想法是在另一个调用之前取消调用函数,但我什么也没找到 // If I don'

在再次调用被调用函数之前,有什么方法可以取消调用它吗?一旦ajax调用成功,就会加载内容并调用我的函数(就在html(数据)之后),因为在另一种情况下它不起作用。如果我再次加载内容,功能将重复,例如,我的所有警报将显示两次。(如果我打10个ajax电话,我会收到10个警报,而不是一个)

我试着只调用函数一次(在第一次ajax调用之后),但它只在第一次ajax调用时起作用,在另一次调用之后停止工作

在这种情况下,我唯一的想法是在另一个调用之前取消调用函数,但我什么也没找到

// If I don't call this function in ajax call below code doesn't work
// Ajax loaded content
function readydoc()
{
    $(document).on("change","#example1",function(){
    // SOME CODE
   }

   $(document).on("change","#example2",function(){
    // SOME CODE
   }

   $(document).on("change","#example3",function(){
    // SOME CODE
   }

   $(document).on("change","#example4",function(){
    // SOME CODE
   }
}


// MY AJAX CALL
function displayPhoto(photoid){
    $.ajax({
        url: "includes/displayphoto.php?photo_id="+photoid
    }).done(function(data) {    
        if (data == false)
        {
            alert ("ERROR");
        }
        else
        {
            $('#content').html(data);
            readydoc(); // Here I call my function
        }
    });
}

// HTML
<div id="content"> <!-- ALL AJAX STUFF GOES HERE <-->
   <div id="example1"></div> <!-- loaded by ajax <-->
   <div id="example2"></div> <!-- loaded by ajax <-->
   <div id="example3"></div> <!-- loaded by ajax <-->
   <div id="example4"></div> <!-- loaded by ajax <-->
</div>
//如果我不在ajax中调用此函数,下面的调用代码将不起作用
//Ajax加载的内容
函数readydoc()
{
$(document).on(“change”,“#example1”,function(){
//一些代码
}
$(文档).on(“更改”,“#示例2”,函数(){
//一些代码
}
$(文档).on(“更改”,“#示例3”,函数(){
//一些代码
}
$(document).on(“change”,“#example4”,function(){
//一些代码
}
}
//我的AJAX调用
功能显示照片(照片ID){
$.ajax({
url:“includes/displayphoto.php?photo_id=“+photoid
}).done(函数(数据){
如果(数据==false)
{
警报(“错误”);
}
其他的
{
$('#content').html(数据);
readydoc();//这里我调用我的函数
}
});
}
//HTML

每次ajax调用完成时,您都会执行附加事件处理程序的
readydoc
。每次调用都会附加越来越多的事件处理程序。相反,请调用事件附加函数:


从ajax调用中删除对
readydoc
的调用-这是不需要的。无论ajax调用运行了多少次,这只会附加事件处理程序一次。

正如我在评论中提到的,这就是您的代码应该是什么样子的:

$(document).ready(function(){
   $(document).on("change","#example1",function(){
     // SOME CODE
   }
   $(document).on("change","#example2",function(){
     // SOME CODE
   }
   $(document).on("change","#example3",function(){
     // SOME CODE
   }
   $(document).on("change","#example4",function(){
     // SOME CODE
   } 
});

function readydoc()
{
   //SOME OTHER CODE YOU WANT TO TRIGGER AFTER EVERY AJAX CALL
}

// MY AJAX CALL
function displayPhoto(photoid){
    $.ajax({
        url: "includes/displayphoto.php?photo_id="+photoid
    }).done(function(data) {    
        if (data == false)
        {
            alert ("ERROR");
        }
        else
        {
            $('#content').html(data);
            readydoc(); // Here I call my function
        }
    });
}

包括你的代码,这样我们就可以看到发生了什么-但听起来好像你在多次附加事件处理程序有很多代码,但我会尝试选择最重要的东西。一秒钟后…我喜欢你将你的函数称为她的方式:)@Caner Akdeniz我是JS begginer,这种语言让我不知所措:)我已经添加了代码。似乎每次完成ajax调用时,您都在一次又一次地绑定相同的更改事件method,您不需要每次添加动态内容时都调用事件声明。在页面加载时声明一次就足够了。因此,我必须重写代码,因为example1和example2必须在readydoc()中才能正常工作,因为readydoc()有他们需要的东西。但我不确定这是否可能与他们的功能之外。
$(document).ready(function(){
   $(document).on("change","#example1",function(){
     // SOME CODE
   }
   $(document).on("change","#example2",function(){
     // SOME CODE
   }
   $(document).on("change","#example3",function(){
     // SOME CODE
   }
   $(document).on("change","#example4",function(){
     // SOME CODE
   } 
});

function readydoc()
{
   //SOME OTHER CODE YOU WANT TO TRIGGER AFTER EVERY AJAX CALL
}

// MY AJAX CALL
function displayPhoto(photoid){
    $.ajax({
        url: "includes/displayphoto.php?photo_id="+photoid
    }).done(function(data) {    
        if (data == false)
        {
            alert ("ERROR");
        }
        else
        {
            $('#content').html(data);
            readydoc(); // Here I call my function
        }
    });
}