Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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 jQuery keyup事件未立即执行_Javascript_Jquery_Keyboard Events - Fatal编程技术网

Javascript jQuery keyup事件未立即执行

Javascript jQuery keyup事件未立即执行,javascript,jquery,keyboard-events,Javascript,Jquery,Keyboard Events,我有以下小jQuery脚本: $("#content").on("keyup", "#ID1", function() { $("#ID2").load("loadText", resizeResult()); }); function resizeResult() { if($("#ID2").height() != $("#ID3").height()){ $("#ID3").animate({

我有以下小jQuery脚本:

      $("#content").on("keyup", "#ID1", function() {
        $("#ID2").load("loadText", resizeResult());
      });

      function resizeResult() {
        if($("#ID2").height() != $("#ID3").height()){
          $("#ID3").animate({
            height: $("#ID2").height()
          }, 800);
        }
      }
我现在的问题是,resize函数将仅由下一个“keyup”事件执行,但我希望在ID2中的加载完成后立即执行

在keyup函数末尾调用resizeResult()

$("#content").on("keyup", "#ID1", function() {
       ..................

       resizeResult();
      });

在document.ready中调用加载函数

$(function(){
   $("#ID2").load("loadText", resizeResult());  //<-- call load function in document ready and in keyup function..
   $("#content").on("keyup", "#ID1", function() {
      $("#ID2").load("loadText", resizeResult());
   })
   .....
});
$(函数(){

$(“#ID2”).load(“loadText”,resizeResult());//代码中的一切看起来都很好。但是您需要将
resizeResult
函数的括号保留在事件中。因为您不希望浏览器执行脚本时立即调用它。只有在触发事件时才需要它。因此,您应该将代码更改为此(还有我的本机常见事件,建议使用jQuery):


为了安全执行,最好等到html完全加载或html标签加载(ID3容器后面的javascript代码)。第一种方法可以使用jQuery中的
$.document.ready

好的,我会测试它。通常groovy中的代码是load:load(${createLink(操作:'searchDeliveryaddress')}?q=“好的……试试看……如果url是正确的,这应该会起作用……让我知道获得的认可:在第一个键控事件上(搜索结果与第二个字母一起传递)调整大小是有效的。当我删除一个字母时,结果会消失,但调整大小会再次被卡住。在下一个keyup事件中更新。我不能使用loadondocumentready,因为我有两个不同的函数加载到同一个div中,这取决于所使用的表单字段。因此,现在我刚刚添加了$(document).ready(resizeResult());好的,我现在已经解决了。问题是浏览器渲染器不知道div的新高度。所以我在高度将被动画化之前设置了一个
setTimeout(function(){…}
。无论如何,谢谢:)没有改进。我猜问题在于加载的动态内容。实际上我不使用字符串,而是使用http请求来获取div的内容。更新dom和计算div的大小之间可能存在延迟。
$("#content").keyup(function() {
   $("#ID2").load("loadText", resizeResult);
});

function resizeResult() {
   if($("#ID2").height() != $("#ID3").height()){
      $("#ID3").animate({
         height: $("#ID2").height()
      }, 800);
   }
}