0

$(document).click に関して問題があります。

現在作業中のページの上部にユーザー バーがあります。右上には、現在ログインしているユーザーのユーザー名が表示されたボックスがあります。それをクリックすると、ログアウト、プロフィールなどのダイアログが開きます。基本的に、Facebook と同じようにいくつかのリンクがあります。

ボックスをもう一度クリックするか、ドキュメント ($(document).click) をクリックすると、このポップアップを閉じることができます。

Chrome では正常に動作しますが、Firefox にはいくつかの問題があります。Firefox はボックス自体を「ドキュメント」と解釈しており、ボックスをクリックするとすぐに閉じます。リンクがあり、クリックするとFFがボックスを閉じているため、リンクをクリックできないので、それはばかげています。

その回避策を見つける方法はありますか?

編集:いくつかのコード

$(document).ready(function() {

/*
***** user options popup *****
*/

$("#userputrigger").click(function() {
    if ($("#userpopup").length > 0)
    {
        $("#userpopup").remove();
        $(".arrop").attr("src","/img/arrowd.png");
        $('#userputrigger').attr("title", "Show options");
        $(".pass").toggleClass("act");
    }
    else
    {
        $(".ui").append('<div id="userpopup"><div class="options"><table cellpadding="0" cellspacing="0"><tr><td class="icon"><img src="img/user.png" width="16" height="16" alt="My profile" /></td><td><a href="#">My profile</a></td></tr><tr><td class="icon"><img src="img/settings.png" width="16" height="16" alt="Settings" /></td><td><a href="#">Settings</a></td></tr><tr><td class="icon"><img src="img/calendar.png" width="16" height="16" alt="Watchlist" /></td><td><a href="#">Watchlist</a></td></tr><tr><td class="icon"><img src="img/prizeicon.png" width="16" height="16" alt="My contests" /></td><td><a href="#">My contests</a></td></tr><tr><td class="icon"><img src="img/music.png" width="16" height="16" alt="My beats" /></td><td><a href="#">My beats</a></td></tr><tr><td class="icon"><img src="img/coins.png" width="16" height="16" alt="Balance" /></td><td><a href="#">Balance</a></td></tr><tr class="last"><td class="icon"><img src="img/logout.png" width="16" height="16" alt="Logout" /></td><td><form action="" method="post"><input type="submit" value="Logout" /><input type="hidden" name="logout" value="1" /></form></td></tr></table></div></div>');
        $(".pass").toggleClass("act");
        $(".arrop").attr("src","/img/arrowuact.png");
        $('#userputrigger').attr("title", "Hide options");
    }
    return false;
});

$('#userpopup').click(function(e) {
    e.stopPropagation();
});

$(document).click(function() {
    if ($('#userpopup').is(':visible'))
    {
        $(".arrop").attr("src","/img/arrowd.png");
        $("#userpopup").remove();
        $(".pass").toggleClass("act");
        $('#userputrigger').attr("title", "Show options");
    }
});

});

実際にはリンクでは機能しますが、送信ボタン「ログアウト」では機能しません。Firefoxではただ閉じます。

ありがとう :)

4

1 に答える 1

2

クラス「設定」でdivをクリックするとしましょう。以下は、ドキュメントクリックの伝播を防ぎます。

$('.settings').click(function(e) {
   e.stopPropagation();

   ...your stuff here...
});
于 2012-12-04T23:52:43.193 に答える