如何判断调用的函数是否源自javascript中的click事件

时间:2013-12-08 15:00:10

标签: javascript jquery

如何判断被调用的函数是否来自点击事件?

例如,单击一个锚点或按钮,捕获事件并调用一个函数。

在firebug的堆栈跟踪中的这个函数内部,我可以看到像这样的对象

Object { originalEvent=Event click, type="click", timeStamp=97128874, more...}

它说原始事件来自点击。

取决于它是来自还是点击,处理方式不同。

有没有办法判断被调用的函数是否来自点击事件?

4 个答案:

答案 0 :(得分:5)

任何由事件触发的函数都会发送一个事件对象。在此对象上调用.type,它将返回它是哪个事件。以下是jQuery docs

中的一个简单示例
$( "a" ).click(function( event ) {
  alert( event.type ); // "click"
});

因此,假设您想要听取两次点击并输入文字输入:

$( "input" ).on("click keyup", eventHandler);

但是你想在点击上做一些特别的事情:

eventHandler = function(event){
  if (event.type === 'click'){
    // code to execute if there is a click
  } else {
    // code to execute if there is a non-click event
  }
  // code to execute for both click and non-click events
};

答案 1 :(得分:4)

那将是event.type

var elem = document.getElementById('test');

elem.addEventListener('click', function(event) {
    console.log(event.type)
}, false);

FIDDLE

或在jQuery中

$('#test').on('click paste mouseenter', function(event) {
    console.log(event.type)
});

FIDDLE

答案 2 :(得分:4)

看到它:

DEMO

$('div').click(test);

function test(e){
    if(e && e.type === 'click')
        alert('called from click!');
    else alert('NOT called from click!');
}

test();

答案 3 :(得分:0)

demo

function myFn( evt ){
   console.log( evt.type );
}


$('div').on('click mouseenter mouseleave', myFn);