2016-02-19 75 views
0

我有的使用jQuery从一个AJAX调用产生以下HTML:检测从类选择器中单击鼠标右键?

<ul id="ul-container"> 
    <li class="li-item" data-deviceKey="1">Data1</li> 
    <li class="li-item" data-deviceKey="2">Data2</li> 
</ul> 

然后我有这样的jQuery代码:

$('.li-item').mousedown(function(e) { 
    if(e.which == 3) { 
     console.log('Right Click Detected on '+$(this).attr('data-deviceKey')); 
    } 
}); 

我想检测单击鼠标右键,然后发生时做一些事情。

这不起作用,它强调我。我试着从字面上理解太阳下的每种组合,以便尝试让这个工作起作用。列出的方式太多,但从字面上看,没有任何东西会检测到右键单击事件。奇怪的是,如果我将选择器设置为ul的ID,它会检测到它吗?但是,问题是,我需要从选定的li获取data-deviceKey属性。

有没有人知道问题出在哪里?

事情我已经试过

1:差不多在这每一个回答:How to distinguish between left and right mouse click with jQuery
2:检测在UL的ID,然后找到“最接近” li元素,刚刚返回的第一个里点击右键元素在列表中。
3:在我的实际代码中,我的li有3个类附加,我试过使用所有这些没有工作
4:尝试使用$('#ul-container li')无济于事。

甚至有可能检测到类的右键点击?我哪里错了?在我没有留下头发之前请帮忙!

+2

你的代码工作正常:https://jsfiddle.net/1hd91wrs/ – rybo111

+0

是的,它检测到鼠标右键的http:// jsbin。 com/kiluvu /编辑?html,js,控制台,输出 –

+0

奇怪它是如何工作的小提琴...但不是在我的网页..:S必须是其他东西导致它。明天我会在办公室里进行调查。不管怎么说,还是要谢谢你。 –

回答

0

这只是一个猜测,但如果您通过AJAX调用加载HTML内容,则需要在之后注册点击处理程序,HTML将插入到DOM中。

尝试在AJAX请求的.done回调注册mousedown

$.ajax({ 
    url: "test.html", 
}).done(function() { 
    $('.li-item').mousedown(function(e) { 
    if (e.which == 3) { 
     console.log('Right Click Detected on ' + $(this).attr('data-deviceKey')); 
    } 
    }); 
}); 
+0

谢谢,明天当我回到办公室时会试一试。奇怪的是它如何在上面的小提琴中工作,但不在我的网页上..可能不得不重新思考我是如何工作的。欣赏回应。 –

相关问题