锚标记事件未触发

时间:2013-05-01 12:08:23

标签: javascript jquery asp.net contextmenu

我的问题是我的锚点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();
    }

});

然后事件被解雇..

我做错了什么???

1 个答案:

答案 0 :(得分:2)

我让这个jsfiddle试图解决你的问题:http://jsfiddle.net/fFs4j/1/

看到我为body#contextMenu添加了单独的点击侦听器。如您所见,我通过检查目标来检查#contextMenu侦听器中是否点击了$('body').click

那是你在找什么?