我目前正在开发一个用于 WebKit 设备的私有框架。我创建了一系列列表视图,我在其中应用了一个hover
用户何时开始触摸某物的类。这是我用来添加它的 jQuery / JavaScript 代码,以及匹配类的 CSS:
$('*').bind('touchstart', function() { $(this).addClass('hover'); }).bind('touchend', function() { $(this).removeClass('hover') });
和CSS:
ul li:hover,
ul li.hover {
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(5,140,245,1)), color-stop(100%,rgba(1,96,230,1)));
background: -webkit-linear-gradient(top, rgba(5,140,245,1) 0%,rgba(1,96,230,1) 100%);
color: #fff
}
ul li:hover a,
ul li.hover a {
background-position: right -38px
}
在 Chrome(或某些支持 Webkit 的桌面浏览器)中查看时,这似乎按预期工作,除了如果鼠标位置在屏幕转换之间不移动,新屏幕上的列表元素将悬停。这显然是意料之中的,因为:hover
伪类已被解雇。
但是,我没想到 iPhone 的 Mobile Safari 也会发生同样的行为。以下是一些截图和场景的简要说明。我在 List Views 元素(它是一个位于 中的a
元素li
)上点击一次,然后将手指从屏幕上移开。显示一个新div
的包含另一个列表。没有点击div
现在显示的新的任何东西,第二个li
有一个类hover
,即使我没有碰过它......
谁能帮我调试一下,或者弄清楚为什么在 Mobile WebKit 上会发生这种情况?这很烦人,因为它的 HCI 很差。我尝试添加以下行来纠正问题,但没有喜悦:
if(window.location.hash)
{
var the_hash = window.location.hash.substring(1);
if($('#' + the_hash).length > 0)
{
$('.current').removeClass('current');
$('#' + the_hash).find('*').removeClass('hover');
$('#' + the_hash).addClass('current');
}
}
else
{
$('div').eq(0).addClass('current');
}
高级感谢您的帮助,很抱歉漫无目的!