1

我编写了一个 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 的错误消息:语法错误,无法识别的表达式:不支持的伪:悬停

这是解决方案: 如何检查鼠标是否在 jQuery 中的元素上?

4

2 回答 2

2

jQuery 不再有:hover选择器。一些浏览器本身支持:hover,但其他浏览器不支持。jQuery 曾经使用它的 CSS 引擎 Sizzle 来实现这一点,但现在不再使用了。

尝试使用hover(or mouseenter/ mouseleave) 事件。

于 2012-10-23T20:12:23.323 回答
0

就像是

$('li:hover).css('display', 'block');相当于$().css('display', 'block');

就像 Rocket Hazmat 所说的使用 jqueryhover

于 2012-10-23T20:11:04.073 回答