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 に答える