图像更改onclick无法在移动浏览器中使用

我有一个代码,可以在点击图像时更改图像。 但是,由于我使用的是mouseup / mousedown,有没有办法让它也可以在移动浏览器中使用?

$(document).ready(function(){ $(".menulink").eq(0).mouseup(function(){ $('#menu1').attr('src', 'http://sofzh.miximages.com/jquery/picture2.jpg'); }); $(".menulink").eq(0).mousedown(function(){ $('#menu1').attr('src', 'http://sofzh.miximages.com/jquery/picture1.jpg'); }); $(".menulink").eq(1).mouseup(function(){ $('#menu2').attr('src', 'http://sofzh.miximages.com/jquery/picture2.jpg'); }); $(".menulink").eq(1).mousedown(function(){ $('#menu2').attr('src', 'http://sofzh.miximages.com/jquery/picture1.jpg'); }); }); 

这是小提琴页面

是的,你需要使用touchstarttouchend 。 我也提高了效率,希望你不要介意。

 $(function(){ var $menulink = $('.menulink'), $menu1 = $('#menu1'), $menu2 = $('#menu2'); function setSrc($menu,$src){ $menu.src = $src; } $menulink.eq(0).on({ 'mouseup touchstart':function(){ setSrc($menu1[0],'http://sofzh.miximages.com/jquery/picture2.jpg'); }, 'mousedown touchend':function(){ setSrc($menu1[0],'http://sofzh.miximages.com/jquery/picture1.jpg'); } }); $menulink.eq(1).on({ 'mouseup touchstart':function(){ setSrc($menu2[0],'http://sofzh.miximages.com/jquery/picture2.jpg'); }, 'mousedown touchend':function(){ setSrc($menu2[0],'http://sofzh.miximages.com/jquery/picture1.jpg'); } }); }); 

这可能更有效,如果你不仅仅有两个,那么它们会特别有用。

 $(function(){ var $menulink = $('.menulink'); for(i=$menulink.length;i--;){ var $menu = $('#menu'+(i+1))[0]; $menulink.eq(i).on({ 'mouseup touchstart':function(){ $menu.src = 'http://sofzh.miximages.com/jquery/picture2.jpg'; }, 'mousedown touchend':function(){ $menu.src = 'http://sofzh.miximages.com/jquery/picture1.jpg'; } }); } }); 

只是另一种选择。

要添加到@ Jonathan的答案,还要检查https://github.com/furf/jquery-ui-touch-punch ,它将触摸事件应用于鼠标对应物。

编辑:不要使用click

是的,你使用touchstarttouchend