【发布时间】:2012-10-23 20:07:32
【问题描述】:
我编写了一个 jQuery 插件,它可以让元素产生脉冲。它在 Chrome 和 Internet Explorer 9 中运行良好。在 Internet Explorer 8 中,在 setTimeout 调用后无法运行。
我创建了一个 jsFiddle 来演示这个问题:http://jsfiddle.net/Guykp/ 这是javascript代码:
$(document).ready(function() {
$.fn.pulseEffect = function(delay, duration) {
var $element, animateOptions;
$element = $(this);
if (!$element.is(":hover")) {
animateOptions = {
opacity: $element.css("opacity") === "1" ? .6 : 1
};
$element.animate(animateOptions, duration);
}
return setTimeout((function() {
return $element.pulseEffect(delay, duration);
}), delay + duration);
};
$("#pulse-element").pulseEffect(0, 1000);
});
如何让它在 Internet Explorer 8 中运行?
这是来自 Internet Explorer 8 的错误消息:语法错误,无法识别的表达式:不支持的伪:悬停
这是解决方案: How do I check if the mouse is over an element in jQuery?
【问题讨论】:
-
你不能从
setTimeout中的函数返回值。 -
我知道,但是代码是使用 CoffeeScript 编写的。 CoffeeScript 返回每个函数中的最后一条语句。不过谢谢! :-)
-
您的代码存在许多问题。首先,
setTimeout只返回 TimeoutHandle。其次,每个人都知道:hover不能很好地与网络浏览器配合使用。而不是return setTimeout(...);写成setTimeout(...); return $this; -
@RocketHazmat
$('a').pulseEffect().click(); // error, null not an object
标签: javascript jquery