3

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

});

然后事件被触发..

我究竟做错了什么???

4

1 回答 1

2

我做了这个 jsfiddle 来尝试解决你的问题:http: //jsfiddle.net/fFs4j/1/

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

那是你要找的吗?

于 2013-05-07T20:04:48.593 回答