Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.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 如何在select元素中对两个更改事件进行优先级排序_Javascript_Jquery - Fatal编程技术网

Javascript 如何在select元素中对两个更改事件进行优先级排序

Javascript 如何在select元素中对两个更改事件进行优先级排序,javascript,jquery,Javascript,Jquery,对于一个select元素,我有两个更改事件处理程序。让我们调用函数Func1和Func2。当我初始化这些处理程序时,我先执行Func1,然后执行Func2,但是当select元素中发生更改事件时,会在Func1之前调用Func2 有没有办法将这两个功能划分为优先级。只是想让您知道每个函数的初始化在不同的脚本中 这是我的代码布局 脚本1: $("select#myDropdownlist").change(function(){ $(this).parents('form:first').

对于一个select元素,我有两个更改事件处理程序。让我们调用函数Func1和Func2。当我初始化这些处理程序时,我先执行Func1,然后执行Func2,但是当select元素中发生更改事件时,会在Func1之前调用Func2

有没有办法将这两个功能划分为优先级。只是想让您知道每个函数的初始化在不同的脚本中

这是我的代码布局

脚本1:

$("select#myDropdownlist").change(function(){
    $(this).parents('form:first').submit();
   // form submit sends post request to update an object which is in session
}
脚本2:

$("select#myDropdownlist").change(function(){
    Send an ajax request and return json result based on the changes happened to the object in script1 function
}
虽然我按顺序初始化了这些函数,但它并没有按顺序调用函数。由于它首先调用Func2,但对象尚未更新,因此结果不正确,因此它随后将调用Func1并更新对象,但由于Func2已返回基于对象以前版本的结果,因此已太迟

还请注意,Script1非常通用,它应该适用于任何表单数据输入页面,其中Script2特定于特定页面,我想在仅在页面中更改select元素后再做一件事。这意味着我不能在Func2中调用Func2

任何帮助都将不胜感激

问候


Behnam Divsalar

事件后排序函数的简单答案是添加一个单独的事件处理函数,逐个运行这两个函数

$("select#myDropdownlist").change(function(){
    callFirstFunction();
    callSecondAjaxFunction();
}

对于事件后的order函数,简单的答案是添加一个事件处理程序函数,该函数逐个运行这两个函数

$("select#myDropdownlist").change(function(){
    callFirstFunction();
    callSecondAjaxFunction();
}

将第一个函数的内容放入方法中如何:

$("select#myDropdownlist").change(function(){
  submitPostFunction1();
}

submitPostFunction1 = function() {
  //do function 1 stuff here
}
然后在更具体的函数-函数2中:

$("select#myDropdownlist").change(function(){
  $("select").unbind();
  submitPostFunction1();
  //do function 2 stuff
  $("select").bind("change", function() {
    submitPostFunction1();
  })
}

请记住,我在函数2中使用了$(“select”),因为您说这是一个更通用的调用,因此这意味着您不会在第一个函数调用中使用id。

将第一个函数的内容放入一个方法中如何:

$("select#myDropdownlist").change(function(){
  submitPostFunction1();
}

submitPostFunction1 = function() {
  //do function 1 stuff here
}
然后在更具体的函数-函数2中:

$("select#myDropdownlist").change(function(){
  $("select").unbind();
  submitPostFunction1();
  //do function 2 stuff
  $("select").bind("change", function() {
    submitPostFunction1();
  })
}

请记住,我在函数2中使用了$(“select”),因为您说这是一个更通用的调用,所以这意味着您不会在第一个函数调用中使用id。

事件没有指定以任何特定顺序触发

如果您想要一个特定的顺序,您需要从元处理程序调用它们,或者通过从另一个调用一个来链接它们。不过,从长远来看,元处理程序更灵活

$("select#myDropdownlist").change(function(){
    firstHandler();
    secondHandler();
}


未指定事件以任何特定顺序激发

如果您想要一个特定的顺序,您需要从元处理程序调用它们,或者通过从另一个调用一个来链接它们。不过,从长远来看,元处理程序更灵活

$("select#myDropdownlist").change(function(){
    firstHandler();
    secondHandler();
}