0

次のコードにより、ブラウザがクラッシュします。Firefox の場合、必要以上に長く実行されていたため、jQuery を停止するかどうかのオプションが与えられました。

div id="divLeaving">
    You are about to leave to: <span id="spanLeavingURL"></span>
    <a id="divLeavingYes" href="#">Yes</a><a id="divLeavingNo" href="#">No</a>
</div>
<a href="http://www.google.com">google</a>

<script type="text/javascript" language="javascript">

    $(document).ready(function() {
        $("a:not(#divLeavingYes, #divLeavingNo)").click(function() {
            var url = $(this).attr("href");
            var test_if_local = url.indexOf("mycompany.com");
            if (test_if_local == -1) {
                $("#spanLeavingURL").text(url);
                $("#divLeavingYes").attr("href", url);
                $("#divLeavingNo").click(function() { $(this).dialog('destroy'); });
                $("#divLeaving").dialog({ modal: true });
                return false;
            }
        });
    });
</script>

ただし、 not セレクターを削除しても、ブラウザーはクラッシュしません。

<div id="divLeaving">
    You are about to leave to: <span id="spanLeavingURL"></span>
    <a id="divLeavingYes" href="#">Yes</a><a id="divLeavingNo" href="#">No</a>
</div>
<a href="http://www.google.com">google</a>

<script type="text/javascript" language="javascript">

    $(document).ready(function() {
        $("a").click(function() {
            var url = $(this).attr("href");
            var test_if_local = url.indexOf("mycompany.com");
            if (test_if_local == -1) {
                $("#spanLeavingURL").text(url);
                $("#divLeavingYes").attr("href", url);
                $("#divLeavingNo").click(function() { $(this).dialog('destroy'); });
                $("#divLeaving").dialog({ modal: true });
                return false;
            }
        });
    });
</script>

#divLeavingYes と #divLeavingNo 以外のすべてを選択するようにクエリを変更するにはどうすればよいですか?

4

3 に答える 3

0

これを試してみてください。「event.stopPropagation();」を含めます。

$(document).ready(function() {
    $("a:not(#divLeavingYes, #divLeavingNo)").click(function(event) {
    event.stopPropagation();
        var url = $(this).attr("href");
        var test_if_local = url.indexOf("mycompany.com");
        if (test_if_local == -1) {
            $("#spanLeavingURL").text(url);
            $("#divLeavingYes").attr("href", url);
            $("#divLeavingNo").click(function() { $(this).dialog('destroy'); });
            $("#divLeaving").dialog({ modal: true });
            return false;
        }
    });
});
于 2009-09-11T17:52:20.897 に答える