我想在这里做的是捕获用户右键单击的每一行的id。因此,如果用户右键单击id = 22的行,那么我需要捕获'22'。我是Jquery的新手。
这是我到目前为止所做的:
$("tr").mousedown(function(event) {
if (event.which === 3) {
alert($(this).attr("id"));
}
});
但这并没有给我任何回报。每个<tr>
都附有一个ID。如何解决这个问题。
修改
即使使用'tr',我也无法出于某种原因检测到mousedown事件。
答案 0 :(得分:2)
我认为数据表在DOM准备好后会绑定,所以你可能需要这样做:
$(function() {
$('#tbl1').on('contextmenu', 'tr', function(e) {
e.preventDefault();
alert(this.id);
});
});
如果仍然无效,请尝试更详尽的测试:
$(function() {
$('body').on('contextmenu', 'tr', function(e) {
e.preventDefault();
alert(this.id);
});
});
您可以将.on()
与指定的参数一起使用,以便将事件侦听器附加到可用的已知dom ready time元素。
第一个将事件监听器绑定到#tbl1
,而最后一个将事件监听器绑定到body
。因此,每次右键单击按下身体内的任何内容都将检查该元素是否为tr
并将触发。
由于事件附加到body
(并且它可能不会改变应用程序的使用)很可能会工作但是它会更宽,所以如果你限制为更好(因为防止无用的检查) table
或div
它是数据表的父级,具体取决于数据表如何操作DOM。
答案 1 :(得分:1)
好的,根据您在我之前回答的评论中提出的问题,您应该更改您的问题以符合您的要求。您正在寻找 RIGHT-CLICK鼠标 ID show。
这应该有效:
$("#tbl1 tbody tr").bind("contextmenu",function(e) {
e.preventDefault();
alert($(this).attr('id'));
});
这是更新的小提琴:Fiddle
答案 2 :(得分:1)
<强> DEMO HERE 强>
根据您在评论中的详细信息,您希望当您右键单击每一行时,警报会显示已点击的tr元素的ID:试试这个:
$('#tbl1 tbody tr').mousedown(function(e){
if(e.button==2) alert($(this).attr('id'));
});
答案 3 :(得分:0)
你的例子对我没有任何问题。 http://jsfiddle.net/YzR47/
$(document).ready(function() {
$("#tbl1 tbody tr").mousedown(function(event) {
if (event.which === 3) {
alert($(this).attr("id"));
}
});
});