如何找出事件是从哪个对象调用的?

问题描述 投票:0回答:1

我希望该事件仅在鼠标单击时起作用,怎么会发生这种情况?

我使用jqwitgets网格,当我用鼠标选择一行时会触发我用于网格的这个事件。

$(document).on("rowselect", "#jqxgrid", function (e) {
    e.preventDefault();
  
});

但是此行选择会在输入事件上再次触发

$('#INPUT_NAME').off('keyup');
$(document).on("keyup", "#INPUT_NAME", function (e) {
    e.stopImmediatePropagation();

    $("#jqxgrid").jqxGrid('selectrow', 0);
    $('#jqxgrid').jqxGrid('focus');
});
  $("#jqxgrid").jqxGrid('selectrow', 0);

输入事件中的这一行触发网格行选择事件,我想防止这种情况发生。

谢谢你

$(document).on("rowselect", ".grid", function (e) {
e.preventDefault();
if(e.type == "keyup")
 return false;

我使用了

e.stopImmediatePropagation();
,但仍然触发了“rowselect”。

当我用e.type查看时,它显示了当前事件的触发

e.type="rowselect"
,但我需要前一个事件的类型,即
e.type="keyup"
,但我找不到前一个类型

keyup 就是一个例子。许多类似的事件都会影响

"rowselect" 
事件。

还有我的最后一个问题 当我用鼠标选择行时,为什么 rowunselect 在 rowselect 事件之后自动运行?我怎样才能防止这种情况? 我添加了

e.stopImmediatePropagation();
,但没有用,谢谢

jsfiddle

jquery triggers
1个回答
0
投票

考虑以下因素:

https://jsfiddle.net/Twisty/z2emuvt7/

JavaScript

 $("#jqxgrid").on("mousedown mouseup click rowselect rowunselect", function(e) {
   e.preventDefault();
   e.stopImmediatePropagation();
   console.log(e.type);
 });

结果

mousedown
rowselect
rowunselect
mouseup
click

您可以在这里看到,当用户选择一行时会触发多个事件。这包括

click
事件。在不深入挖掘的情况下,我猜测有很多与
mousedown
mouseup
相关的东西与选择和拖动相关。

我看不出有什么好方法来完成你想做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.