使用点击链接时,我遇到了jQtouch的问题,
我正在尝试获取一个链接,以便在点击一个iPhone应用程序商店时更改背景颜色(蓝色)
所以我正在使用这段代码:
<script>
var jQT = new $.jQTouch({
statusBar: 'black',
useFastTouch: true
});
$(function(){
$("a").live('tap', function() {
$(this).addClass("active");
},function() {
$(this).removeClass("active");
});
});
</script>
“。active”样式包含蓝色背景:
.active {
background-image: -webkit-gradient(linear, left top, left bottom, from(#048bf4), to(#015de6));
}
和链接是这样的:
<a id="a" href="http://google.com"><img src="someimage.png"><div>Google</div></a>
问题是,当我点击链接时,背景会按预期更改但链接不起作用,当我移开手指时不会删除新背景^^
有人能指出我做错了什么:/?
答案 0 :(得分:0)
如果点击或点击了“活动”类,它应自动添加到锚中,因此您不需要自己添加和删除“活动”类。
您应该为锚元素分配正常的背景图像,并为:active:
分配活动背景图像a {
background-image: ...
}
a:active {
background-image: ...
}
希望这可以解决您的问题。
答案 1 :(得分:0)
谢谢威廉, 我删除了jQtouch并添加了仅使用jQuery的点击代码,
$(document).ready(function() {
var delay = 100;
var hovertime = null;
var hoverdelay = null;
$("#list a").bind('touchstart mouseover', function(){
clearTimeout(hoverdelay);
hovertime = new Date().getTime();
var $el = $(this).add("*", this);
hoverdelay = setTimeout(function(){
$el.addClass("active");
}, delay);
});
$("#list a").bind('touchend mouseup', function() {
clearTimeout(hoverdelay);
var now = new Date().getTime();
var $el = $(this).add("*", this);
if(now < hovertime + delay) {
$el.addClass("active");
setTimeout(function(){
$el.removeClass("active");
}, delay);
} else {
$el.removeClass("active");
}
});
$("#list a").bind('touchmove touchcancel mouseout', function() {
clearTimeout(hoverdelay);
var $el = $(this).add("*", this);
$el.removeClass("active");
});
});
我在这里放了一个示例:http://fun.r4dius.net/temp/iphone.html
它基本上是这样的:
这是我面临的最后一个问题:/
出于某种原因,如果我点击,那么我在元素设置为活动的同一时间开始移动(在100ms延迟之后),它保持活动直到发生“touchend”,而不是删除活动类应该如此,有人理解为什么吗?
我在jQtouch预览页面上对此进行了测试,无法重现, 但如果我在我的页面上使用jQtouch,问题就会出现同样的问题:/