如何将JQuery事件处理程序分配给特定事件

时间:2013-10-08 12:20:23

标签: javascript jquery ajax

我按下按钮时会执行以下名为Howto的Javascript函数:

function howto(){

   $('#elementtoupdate').ajaxSend(function() {
       //Code to execute
   });

   $('#elementtoupdate').ajaxComplete(function() {
       //Code to execute
   });

   $('#elementtoupdate').load('serverside/file_path.php')
}

使用JQuery,该函数分配两个JQuery全局Ajax事件处理程序,它们在启动任何AJAX调用时启动。然后函数继续并调用JQuery .load函数,并启动全局Ajax事件处理程序中的任何代码。

然而,正如Global所说的那样,它们也是由其他Jquery AJAX调用启动的。不幸的是,这是不可取的,因为我在脚本中有其他AJAX调用。我需要仅在执行$('#elementtoupdate').load('serverside/file_path.php')时执行代码。

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:4)

load自身的回调本身并非全局:

.load( url [, data ] [, complete(responseText, textStatus, XMLHttpRequest) ] )

因此:

$('#elementtoupdate').load('serverside/file_path.php', function() {
  // complete
});

答案 1 :(得分:0)

你应该接受David Hedlund的回答。为了完整起见:

你可以改变:

function howto(){

   $('#elementtoupdate').ajaxSend(function() {
       //code to be executed before send
   });

   $('#elementtoupdate').ajaxComplete(function() {
       //code to be executed after completed
   });

   $('#elementtoupdate').load('serverside/file_path.php')
}

到:

function howto(){
    //code to be executed before send

    $('#elementtoupdate').load('serverside/file_path.php', function(){
        //code to be executed after completed
    })
}