2013-05-16 36 views
0

我有以下JS:jQuery的情商不移动Safari工作

$('.overlayWrap').on('click', '.overlaySwitch', function(event) { 
    var $this = $(this), 
     $overlayRegisterWrap = $('.overlayRegisterWrap li'), 
     type = $(this).data('go'); 

     event.preventDefault(); 
     $overlayRegisterWrap.hide(); 
     $overlayRegisterWrap.eq(type).show(); 
}); 

它工作在Firefox,Chrome和Safari,但只要我尝试在移动它隐藏所有李时珍但后来不显示适当的李。如果我控制台注销$overlayRegisterWrap.eq(type)它发现正确的李,但不显示它。我完全失去了。有人有主意吗?

编辑 这里是基本的HTML结构:

<div id="Overlay" style="" class="overlayWrap" focus=""> 
    <ul class="overlayRegisterWrap"> 
     <li style="display: none;"> 
      //some crazy code 
      <a class="overlaySwitch" data-go="1">Login</a> 
     </li> 
     <li style="display: none;"> 
      //some crazy code 
      <a class="overlaySwitch" data-go="2">Register</a> 
     </li> 
     <li style="display: none;"> 
      //some crazy code 
      <a class="overlaySwitch" data-go="3">Next</a> 
     </li> 
     <li style="display: none;"> 
      //some crazy code 
      <a class="overlaySwitch" data-go="1">Forgot</a> 
     </li> 
     <li style="display: none;"> 
      //some crazy code 
      <a class="overlaySwitch" data-go="2">Register</a> 
     </li> 
    </ul> 
</div> 
+0

你可以显示你的标记? 'data-go'的价值是什么? –

+0

还有很多,但我放了基本的 – Jacinto

+0

行,'.overlaySwitch'在哪里? –

回答

0

的问题是,你传递一个字符串jQuery.fn.eq,但只接受数字。你必须将数据值“转换”为为一个整数。在你的情况下,以下应该做的伎俩:

$('.overlayWrap').on('click', '.overlaySwitch', function(event) { 
    var $this = $(this), 
     $overlayRegisterWrap = $('.overlayRegisterWrap li'), 
     type = $(this).data('go') << 0; // We you the bitwise operatir to parse the data-string to an integer 

     event.preventDefault(); 
     $overlayRegisterWrap.hide(); 
     $overlayRegisterWrap.eq(type).show(); 
});