执行jquery函数时禁用鼠标单击事件

时间:2013-07-25 10:20:19

标签: jquery

我想在焦点上做一个水平手风琴,并专注于文本场。为了实现这一点,我使用的是jQuery动画。它工作正常,但如果文本字段在完成动画之前失去焦点,则对齐变得不正确。所以我想阻止鼠标单击事件,直到完成jQuery函数/执行。

供您参考,这是我的代码:

$(".container-inline input[type=text]").focusin(function() {    
    $("#page-wrap").width("720px");
    $("#my_search").width("171px"); 
    $("#myDiv").animate( { width: "150px" },{queue: false, duration: 1000});
});

$(".container-inline input[type=text]").focusout(function(){
    $("#page-wrap").width("720px");
    $("#my_search").width("171px");
    $("#myDiv").width("88px");
});

我该如何解决?

1 个答案:

答案 0 :(得分:0)

jQuery中有一个名为promise的方法,可用于检查排队的动画是否已完成。它可以像下面那样使用

$("div").promise().done(function() {
  alert("Finished!");
});

否则我会建议你有一个标志变量来检查动画是否完成。如果动画没有结束,你可以通过检查标志变量来关注焦点。喜欢以下方式

var animationOver = false;
$(".container-inline input[type=text]").focusin(function() {    
    $("#page-wrap").width("720px");
    $("#my_search").width("171px"); 
    $("#myDiv").animate( { width: "150px" },{queue: false, duration: 1000});
    animationOver = true;
});

$(".container-inline input[type=text]").focusout(function(){
    if (!animationOver)
      return false;
    $("#page-wrap").width("720px");
    $("#my_search").width("171px");
    $("#myDiv").width("88px");
    animationOver = false;
});

正如iamkhush所说,阻止鼠标点击我们无法得到帮助:(