有没有办法在再次调用之前取消调用函数?在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>
答案 0 :(得分:1)
每次你的ajax调用结束时,你正在执行附加事件处理程序的readydoc
。每次调用都会附加越来越多的事件处理程序。相反,请调用您的事件附加功能once on page load:
$(function() {
//this will run once when the page has loaded
$(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
}
});
从您的ajax调用中删除对readydoc
的调用 - 不需要它。无论ajax调用运行多少次,这都只会附加一次事件处理程序。
答案 1 :(得分:1)
正如我在评论中提到的,这就是你的代码应该是这样的:
$(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
}
});
}