Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法判断事件处理程序是否是在jQuery中使用没有自定义标志的代码触发的?_Jquery_Javascript Events - Fatal编程技术网

有没有办法判断事件处理程序是否是在jQuery中使用没有自定义标志的代码触发的?

有没有办法判断事件处理程序是否是在jQuery中使用没有自定义标志的代码触发的?,jquery,javascript-events,Jquery,Javascript Events,考虑一下这个jQuery代码 $('button#my').click(function(event) { alert('hello'); }); $('button#my').click(); 显然,这将打开一个警报窗口 但是,我是否可以判断,仅使用jQuery,事件处理程序是由代码触发的,还是用户单击了它(没有丑陋的标志检查,例如,var userClicked=true) 我原以为会有事件的属性,但我想不出来 这可能吗 谢谢。您可以检查,对于(或其他触发器)调用,将是未定义的。

考虑一下这个jQuery代码

$('button#my').click(function(event) {
    alert('hello');
});

$('button#my').click();
显然,这将打开一个警报窗口

但是,我是否可以判断,仅使用jQuery,事件处理程序是由代码触发的,还是用户单击了它(没有丑陋的标志检查,例如,
var userClicked=true

我原以为会有
事件的属性,但我想不出来

这可能吗

谢谢。

您可以检查,对于(或其他触发器)调用,
将是未定义的。
,例如:

$('button#my').click(function(event) {
    if(event.which) {
        alert("User click");
    } else {
        alert("triggered click");
    }
});

.

我刚刚试过,它们之间有很多不同之处;使用Firebug并尝试
$(“button#my”)。单击(console.log)
,您将在单击或
click()
时看到记录的事件。一个是
event.currentTarget
,单击时它是元素,或者
document
单击时(
ed)(ed)(可能会根据调用它的范围进行更改,实验)。还有其他各种不同之处-
(偏移|客户端|层)[XY]
都设置为单击,但不设置为
单击()
,等等


(编辑:正如Nick所说,
event.which
是另一个;它是单击的1,而不是为
click()
定义的)

延迟回答。尼克的回答是可行的,但你可以用更明确一点的方式来回答

您可以使用附加参数定义
.click()
,并使用
.trigger('click')
而不是
.click()
传递这些参数

示例:

这样,它以支持的方式使用jQuery的显式特性

// Passed via .trigger() ----------------v
$('button#my').click(function(event, wasManual) {
    if( wasManual ) {
        alert('triggered in code');
    } else {
        alert('triggered by mouse');
    }
});

  // Array of additional args------v
$('button#my').trigger( 'click', [true] );