我有以下js:
$('.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中运行,但是一旦我在手机上试用它就会隐藏所有的li,但之后却没有显示正确的li。如果我控制台注销$overlayRegisterWrap.eq(type)
,它会找到正确的li但不显示它。我完全迷失了。有人有什么想法吗?
EDIT 这是基本的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 :(得分: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();
});