2010-08-07 95 views
1

我使用的是自来水的链接时具有jQtouch问题,jQtouch点击并链接问题

我想获得一个链接改变背景颜色挖一拉iPhone的AppStore(蓝色)时

所以我用这个代码:

<script> 
    var jQT = new $.jQTouch({ 
     statusBar: 'black', 
     useFastTouch: true 
    }); 
    $(function(){ 
     $("a").live('tap', function() { 
      $(this).addClass("active"); 
     },function() { 
      $(this).removeClass("active"); 
     }); 
    }); 
</script> 

了 “活跃” 的风格包含了蓝色背景:

.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

“活动”类应,如果被点击或轻敲被自动添加到一个锚,所以你不应该需要添加和删除“活动”类自己。

你应该有一个分配给锚的元素和一个背景图像正常的背景图像:活跃:

a { 
    background-image: ... 
} 

a:active { 
    background-image: ... 
} 

希望这将解决你的问题。

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”之前设置“激活”时),我们仍切换到“主动”和100ms的延迟之后将其删除,只是为了显示它是录音
  • 如果我们在录音时移动,则“主动”类被移除

这里是我现在面临的最后一个问题:/

出于某种原因,如果我点击,然后我开始在完全相同的时间,该元素设置为激活(100ms的延迟后)移动,它保持活动状态,直到发生“touchend”,而不是像应该的那样去除活动类,是否有人知道为什么?

我测试这个jQtouch预览页面上,无法重现它, 但如果我用jQtouch我的网页上出现的问题是相同的:/