锚点事件未触发

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();
    }

});

然后事件被触发了...

我做错了什么???


1
你的代码中有语法错误,你缺少了一个 . => $('*').not($('.anchorClass')).mousedown(function() { - Ram
这是一个打字错误。我已经在问题中进行了更正。但仍然无法工作。 - writeToBhuwan
1个回答

2
我为了尝试解决你的问题而制作了这个 jsfiddle: http://jsfiddle.net/fFs4j/1/ 请注意,我分别为 body#contextMenu 添加了单独的点击监听器。正如您所见,我通过检查目标来检查是否在 $('body').click 监听器中单击了 #contextMenu
这符合您的要求吗?

+1 好的解决方案。但是我已经找到了解决这个问题的方法。我的问题在于上下文菜单div的绝对定位。所以我从来没有点击上下文菜单,而是点击了body。这导致锚标签事件触发出现问题。你的解决方案也很好。将其标记为答案。 - writeToBhuwan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接