我的问题是我的锚点onclick事件没有触发。这是我的jquery代码
这是一个pageLoad事件
function pageLoad() {
我在锚点上绑定上下文菜单事件
$('#ctl00_ContentPlaceHolder1_gvParamShow a').bind("contextmenu", function(e) {
// alert('event fired');
e = jQuery.event.fix(e);
$('#contextMenu').parent().css('position', 'absolute');
$('#contextMenu').css('borderColor', 'Black').css('borderStyle', 'Solid').css('borderWidth', '1px').css('backgroundColor', '#EEEEEE').css('color', 'Black');
$('#contextMenu').show();
//alert('appended');
var mouseX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
var mouseY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
document.getElementById('contextMenu').style.top = mouseY + 'px';
document.getElementById('contextMenu').style.left = mouseX + 'px';
return false;
});
这是问题所在,请阅读代码末尾的说明
$('*').not($('.anchorClass')).mousedown(function() {
if ($(this).is('a')) {
}
else {
$('#contextMenu').hide();
}
});
}
锚定点击
时要触发的事件function showLiveTrack() {
alert('hey');
return false;
}
这是我的上下文菜单代码
<div id="contextMenu">
<div><a onclick="showLiveTrack();" class="anchorClass">Show Live Track</a></div>
<div><a class="anchorClass">Bhuwan</a> </div>
<div><a class="anchorClass">Bhuwan</a> </div>
<div><a class="anchorClass">Bhuwan</a> </div>
</div>
我的问题的解释:
我想在上下文菜单锚点击上激活showLiveTrack()函数。此外,当用户点击屏幕上的任何其他位置时,我想让上下文菜单消失。 我已经尝试了一切可能的方式,但是我无法解雇这个锚点的事件。相反,它使上下文菜单消失。为什么?
如果我删除以下代码
$('*').not($('.anchorClass')).mousedown(function() {
if ($(this).is('a')) {
}
else {
$('#contextMenu').hide();
}
});
然后事件被解雇..
我做错了什么???
答案 0 :(得分:2)
我让这个jsfiddle试图解决你的问题:http://jsfiddle.net/fFs4j/1/
看到我为body
和#contextMenu
添加了单独的点击侦听器。如您所见,我通过检查目标来检查#contextMenu
侦听器中是否点击了$('body').click
。
那是你在找什么?