【问题标题】:.removeAttr('style') doesn't seem to work as expected on ipad.removeAttr('style') 在 ipad 上似乎无法正常工作
【发布时间】:2013-09-24 14:00:03
【问题描述】:

如果你使用.removeAttr('style'),谁知道为什么 ipad 上的 CSS 不更新?

这里有一个简单的例子来展示我是如何实现精灵切换的:

CSS

nav li a { background: url('../img/sprites.gif'); }
nav li a#pizza { background-position: -40px -42px; }
nav li a#beer { background-position: -40px -82px; }
nav li a#spagetti { background-position: -40px -122px; }

Javascript

var $arr_nav_elements = $('nav li a');
$('nav li a').on('click', function(event) {
   //works fine on all modern browsers except ipad!
   $arr_nav_elements.removeAttr('style');

   var $arr_bg_pos = $(this).css('backgroundPosition').split(" ");
   //create "active" state on the current button  
   $(this).css('backgroundPosition', '0 '+$arr_bg_pos[1]); 
}

在上面的示例中,我的按钮将在我的 sprites.gif 中第一次单击时变为“活动”状态,但是在我单击任何内容后,jQuery 的 css() 应用的内联样式不会在 ipad 上被删除/更新不同的按钮。

有什么想法吗?

【问题讨论】:

  • 为什么在这里使用 each 循环?可能是:$arr_nav_elements.removeAttr('style');$arr_nav_elements.attr('style','')
  • 您确定它适用于所有浏览器吗? ele.removeAttr('style'); 不应该工作,因为 ele 只是一个原生 DOM 元素并且没有方法 removeAttr
  • 对不起,这个例子是我自己写的。 A.Wolff:是的,谢谢!删除了 each() - 现在应该是正确的。 :)
  • 抱歉,不要更改有问题的代码,而是尝试对其进行测试。也许现在它可以工作了,顺便说一句,我们不再知道你正在使用哪个代码......所以你能发布你正在使用的确切代码,哪些不工作???

标签: javascript jquery ios css ipad


【解决方案1】:

好像.removeAttr('style'); 在 ipad 上有一些问题(可能所有 ios 设备)

正如 A. Wolff 和 ᾠῗᵲᄐᶌ 所指出的,这些替代方案可以正常工作:

.attr('style','');
.css('backgroundPosition','');

【讨论】:

    【解决方案2】:

    希望这会有所帮助:

    试试这样的:

    //replace the $.each(...) block with following
    $('nav li a').each(function(){
        $(this).css('name','value'); //here you manually adjust your css styles
    });
    

    祝你的项目好运!

    【讨论】:

      猜你喜欢
      • 2017-09-04
      • 2012-05-06
      • 2013-02-17
      • 2017-10-09
      • 2017-08-03
      • 2014-05-02
      • 2011-09-11
      • 2016-02-11
      • 1970-01-01
      相关资源
      最近更新 更多