jQuery中is方法防止动画重复执行、停止执行的方法

作者:袖梨 2022-06-25

定义和用法

is() 根据选择器、元素或 jQuery 对象来检测匹配元素集合,如果这些元素中至少有一个元素匹配给定的参数,则返回 true。

语法

.is(selector)

与其他筛选方法不同,.is() 不创建新的 jQuery 对象。相反,它允许我们在不修改 jQuery 对象内容的情况下对其进行检测。这在 callback 内部通常比较有用,比如事件处理程序。

返回 false,因为 input 元素的父元素是 p 元素:

  var isFormParent = $("input[type='checkbox']").parent().is("form");
  $("div").text("isFormParent = " + isFormParent);

典型的语法:

$(selector).hide(speed,callback)

当需要动画结束后才去执行特定语句,这里用callback能实现。更复杂的情况我觉得用判断动画是否正在执行或是否执行完成,会更妥当。

防止重复执行动画避免页面混乱

可以先判断一下元素是否处于动画中。
如:

if(!$(".content").is(":animated")){
//元素不处于动画中执行。
}


在动画事件执行前加上一个判断,比如产生动画效果目标的是target,那么要加上判断

if(!target.is(":animated")){},

举例:

if(!$(selector).is(":animated")){
  $(selector).hide(speed,callback)
}

这可以保证动画只会在上一次动画结束后才会执行,保持动画的完整性,但是在短动画情况下,连续点击时会有反应迟钝的感觉。
而用stop可以强制动画当前执行,直接结束,回到初始状态或结束状态,这会造成动画脱节感,但反应迅速。权衡使用。

$("#div").stop();//停止当前动画,继续下一个动画 
$("#div").stop(true);//清除元素的所有动画       
$("#div").stop(false, true);//让当前动画直接到达末状态 ,继续下一个动画
$("#div").stop(true, true);//清除元素的所有动画,让当前动画直接到达末状态

相关文章

精彩推荐