1

だから私はツールチップを作成しようとしています。それを作成している間、ボディにクリックイベントが追加され、ボディ上の何かがクリックされるとツールチップが消えるようになります。理論的には、これは伝播するため、ユーザーがリンクをクリックするとツールチップが消え、ユーザーはリンクが指す場所に移動します。

私が遭遇している問題は、何らかの理由で以下が機能していないことです。どこかをクリックする前でも「ここ」が表示され、ツールチップが作成された直後にツールチップの削除がトリガーされるため、ツールチップは表示されません。これを行う方法についての考え。

    $("a").click(function(event){
        event.preventDefault();
        $(document.body).click(function(){
            $('.tooltip').remove();
            console.log('here');
        })

        var text = $(this).attr('title');
        var tooltip = $('<div class="tooltip">' + text + '</div>');
        $(document.body).append(tooltip);
    });

JSフィドルは次のとおりです。http://jsfiddle.net/fgRTa/最初にリンク2をクリックして機能することを確認する必要があります。そうでない場合は、リンク1を実行してからリンク2を実行すると、本文にクリックイベントが既に存在するため、実行されません。 tツールチップの追加を許可します。理論的には、その問題も解消して、1回クリックするとクリックイベントが削除されるようにしたいのですが、これは副次的な問題です。

ありがとう

4

1 に答える 1

0

これは、クリックハンドラーを本文に追加したときに、現在のクリックの伝播が停止していないためです。

を使用してみてくださいevent.stopPropagation();

フィドル、あなたの考慮のためにhttp://jsfiddle.net/fgRTa/2/

于 2012-08-30T16:32:42.330 に答える