Javascript jQuery keyup事件未立即执行
我有以下小jQuery脚本: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({
$("#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);
}
}