[英]JS Always getting the same event object “e” parameter with mousedown
我正在尝试使用DataTable( https://datatables.net/ )上的JQuery处理鼠标中键单击事件。 这是我的代码。
var tbl = document.getElementById("entries");
$(tbl).on('mousedown', function (e) {
e.preventDefault();
if (e.which == 2) {
var table = window.table_entries;
var data = table.dataTable.row($(e.detail)).data();
window.open("/plugin/Changes/@Model.Revision/" + data.BuildId, '_blank');
}
});
无论我在哪里单击,我总是得到相同的BuildId(284)。 如何获得正确的行?
我还有另一个代码段,可以很好地工作
tbl.addEventListener("cdt.click", function (e) {
var table = window.table_entries;
var data = table.dataTable.row($(e.detail)).data();
window.open("/plugin/Changes/@Model.Revision/" + data.BuildId, '_blank');
window.location("/plugin/Changes/@Model.Revision/" + data.BuildId);
});
提前致谢!
如果要检查中间按钮,请单击jquery检查此代码
$("#foo").on('click', function(e) {
if( e.which == 2 ) {
e.preventDefault();
alert("middle button");
}
});
从这个问题开始, 使用中间点击触发onclick事件
而且,如果您想检查鼠标,则可以检查其他@KyleMit答案使用jQuery检测中键单击(滚动按钮)
@Jordi Jordi(因为我现在无法评论):根据JQuery的文档,单击和鼠标按下均可以。
$('h1').on('mousedown', function(e) {
alert(e.which);
});
将为LClick显示1,为中显示2,为RClick显示3。 但这不是问题。 如果您获得相同的BuildId,那是因为选择器不是很好的选择器。
如果要搜索准确的行,则应像这样更改选择器:
$('td').on('mousedown', function (e) {
e.preventDefault();
if (e.which == 2) {
// Here you should get the row like this :
var row = $(this).parent();
}
});
现在,您要做的就是执行此操作。 var“行”将包含TR,表示您只需单击一下行。
编辑:请注意,您的第二个代码段不包含e.preventDefault()。 也许这是第二个作品起作用的原因吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.