将用于触摸屏设备的on('hover')更改为on('click')?

3
我有一个名为isTouchscreen的布尔变量和一些on('hover', ...)事件。如果isTouchscreen布尔变量等于true,则需要将on('hover')事件更改为on('click')事件。这是否可行?
类似于:
```javascript if (isTouchscreen) { $('selector').off('hover').on('click', function() { // do something on click }); } ```
 $(".smart-suggestions").on("hover", ".option", function(){
    $('.img-container img').show();
    //and do more stuff....
 });

    if(touchscreen==true){
       //change onhover event to onclick event  
    }
2个回答

7
你可以这样做:
var evt = touchscreen ? 'click' : 'hover';

$(".smart-suggestions").on( evt, ".option", function(){/*.....*/});

如果您需要两个事件,有另一种方法:

$(".smart-suggestions").on('click hover', ".option", function(event){
       /* create whatever conditions you need*/
      if( event.type=='click' && touchscreen){
            doThis();
       }else{
              doThat();
       }
});

谢谢回复!如果on('hover')函数包含常规的click()和hover()事件,那么如果isTouchscreen为true,有没有办法也处理它们? - AnchovyLegend
“change to” 是什么意思?不是很清楚。原始的示例代码会在 touchscreen 为真时绑定 click 事件,否则绑定 hover 事件。 - charlietfl
1
@MHZ 使用 .trigger(evt) 而不是 .click/.hover,它应该可以工作。 - Evan Davis
@Mathletics 谢谢回复,我不确定您的意思,请举个例子好吗? - AnchovyLegend
@MHZ .click() 方法会触发 click 事件;它只是 .trigger('click') 的简写方法。使用长格式时,您可以传入事件变量,以便切换触摸和传统模式。请参见第三个例子,click() method with no params - Evan Davis
显示剩余5条评论

2

我建议你总是绑定 'on click' 事件。并且有条件地,如果触屏不支持,则也绑定 'on hover' 事件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接