IE7中的jquery旋转只旋转一次

时间:2011-05-08 23:11:37

标签: jquery html jquery-plugins

我的网站上有一些代码。 FF,Chrome和IE9都运行良好,但在IE兼容模式下,该元素只旋转一次(第一个mouseenter),然后再次旋转直到页面刷新。也似乎在IE7兼容模式下(不确定哪个版本真的还原为HTML,如果条件甚至没有将它作为IE7捕获),mouseleave不被尊重或被忽视。

我有一个乱七八糟的旋转错误(或IE7未实现),但要求第二意见,这里是样本

http://jsfiddle.net/robx/wR29n/12/

这是我正在使用的插件:http://jqueryrotate.googlecode.com/files/jQueryRotateCompressed.2.1.js

mouseenter和mouseleave在没有旋转的情况下工作得很好;通过使用$(this).html("enter")$(this).html("leave")替换旋转线进行测试。

HTML代码:

<ul class="subMenu">
    <li>
        <a href="" id="a" title="">
            <img class="icon" src="http://www.bestfreeware.com/soft-icon/f/free-business-icons-pack-108561.jpg" alt="" />
        </a>
    </li>
    <li>
        <a href="" id="b" title="">
            <img class="icon" src="http://icons.iconarchive.com/icons/iconka/beer/48/messenger-icon.png" alt="" />
        </a>
    </li>
</ul>

使用Lee的更新编辑修复JQuery代码:

$(".icon").rotate({bind:{
  mouseenter: function(){
      $(this).rotate({
        angle: 0, 
        animateTo:360,
        duration: 2000
      })
  },
  mouseout: function(){
    alert('test');
  }
}
});

span,group和image不是我做的,它来自旋转脚本。我用过&lt; img /&gt;并且它被替换了(不确定它是否会改变IE7中的任何内容)。通过旋转脚本添加跨度和组。 enter image description here

3 个答案:

答案 0 :(得分:4)

我也偶然发现了这个问题,经过一些调查后我在IE中注意到整个图像标签被一系列div,span和其他内容所取代。在rvml:image标记的最顶层包装中,有一个id引用原始图像的id。如果未在原始图像中设置此id,则此id等于null。那么猜猜是什么,我给了图像一个id,并提到了jQuery旋转脚本来处理那个特定的id并且它工作了!可能这也适用于其他元素,只要你给你想要旋转id的东西并在jQuery('id selector')中使用这个id.rotation()函数。这只是IE的必需品,它只运行一次!在FF中,一切都按预期顺利进行。

干杯!

[编辑]

这也适用于使用类而不是id,只需确保引用旋转目标。

答案 1 :(得分:2)

尝试

$("a").click(function() {
    return false;
});

$(".icon").rotate({bind:{
  mouseenter: function(){
      $(this).rotate({
        angle: 0, 
        animateTo:360,
        duration: 2000
      })
  },
  mouseout: function(){
    alert('test');
  }
}
});

答案 2 :(得分:1)

尝试

$("a").click(function() {
    return false;
});
$(".icon").hover(function() {
    var anime = {
        angle: 0,
        animateTo: 360,
        easing: $.easing.easeInOutExpo,
        duration: 2000
    };
    $(this).stop(true, true).rotate(anime);
}, function(){alert("Mouse out");
});