将一个事件监听器更改为另一个?

时间:2012-12-24 15:48:24

标签: jquery

我是jquery的新手,我想知道是否有可能将所有点击事件(对于特定div中的元素)更改为使用jquery双击事件?非常感谢提前。

function isTouchDevice(){
  return (typeof(window.ontouchstart) != 'undefined') ? true : false;
}
if(isTouchDevice()===true){
     //change click events to doubleclick events
}

3 个答案:

答案 0 :(得分:4)

观看这个魔术:

$('*').each(function(){
   var click = $(this).data('events').click;
   if(click[0]) { //check if there is a click handler attached 
       $(this).on('dblclick', click[0].handler).off('click');
   }
});

以上内容将遍历页面上的每个元素,并将其点击处理程序移动到其dblclick处理程序。

通常不建议使用*。我会尝试选择所有具有点击选择器的元素,然后通过它们。

答案 1 :(得分:0)

当然是......

function yourClickHandler(event) {
    // here you can check for click or dblclick as so...
    if (event.type == 'dblclick') { /* handle dblclick specific stuff */ }
    else if (event.type == 'click') { /* handle normal click specific stuff */ }
}

$(document).ready(function() {
    if (isTouchDevice()) {
        $('div#SPECIFIC_DIV *').on('dblclick', yourClickHandler);
    }
    else {
        $('div#SPECIFIC_DIV *').on('click', yourClickHandler);
    }
});

答案 2 :(得分:-1)

试试这个:

$('#target').click(function() {
    if(isTouchDevice == true) {
      $('#target').dblclick();
    }
});