ホームページ > ウェブフロントエンド > jsチュートリアル > jqueryはクリック、マウスオーバー、マウスアウトのバブリング問題を解決しないようにします

jqueryはクリック、マウスオーバー、マウスアウトのバブリング問題を解決しないようにします

黄舟
リリース: 2017-06-28 14:21:17
オリジナル
2047 人が閲覧しました

<ul>
                <li class="red"><a href="javascript:void(0)">项目一</a></li>
                <li class="green"><a href="javascript:void(0)">项目二</a></li>
                <li class="green"><a href="javascript:void(0)">项目三</a></li>
                <li class="green"><a href="javascript:void(0)">项目四</a></li>
            </ul>

 $(function () {
            $.each($("li"), function (i, o) {
                $(this).children("a").click(function () {
                    allhide();
                    $(this).parent("li").attr("class", "red");
                });
                if ($(this).attr("class") != "red") {
                    $(this).mouseenter(function () {
                        $(this).attr("class", "red");
                    });
                    $(this).mouseleave(function () {
                        $(this).attr("class", "green");
                    });
                }
            });
        });
        function allhide() {
            $.each($("li"), function (i, o) {
                $(this).attr("class", "green");
            });
        }
 <style type="text/css">
        li
        {
            width: 80px;
            list-style-type: none;
        }
        .red
        {
            background-color: Red;
        }
        .green
        {
            background-color: Green;
        }
    </style>
ログイン後にコピー
 $.each($("li"), function (i, o) {
            $(this).children("a").click(function (e) {
                $("li").attr("class", "green");//不用另起函数
                $(this).parent("li").attr("class", "red");
                e.stopPropagation();
            });
            if ($(this).attr("class") != "red") {
                $(this).mouseenter(function (e) {
                    $(this).attr("class", "red");
                    e.stopPropagation();
                });
                $(this).mouseleave(function (e) {
                    $(this).attr("class", "green");
                    e.stopPropagation();
                });
            }
        });
ログイン後にコピー

は機能しないようです。マウスをクリックするとliのスタイルが変更されますが、マウスを遠ざけるとスタイルが削除されます

<script type="text/javascript">
    //这里不存在冒泡呀
    $(function () {
        $("li").each(function(){
            $(this).find("a").click(function(){
                $("li").attr("class","green");
                $(this).parent().attr("class","red");
            })
        });
    });
</script>
ログイン後にコピー

ああ、そうではありません。泡立っている? ?次に、ここをクリックしてマウスを移動すると、スタイルが変わります

$(this).children("a").click(function () {
                    allhide();
                    $(this).parent("li").attr("class", "red");
                });
ログイン後にコピー

$(this) ポインタを変更した後も、次のコードは機能するでしょうか。
変数を使用して var that = $(this) を記録し、試してみてください

 if ($(this).attr("class") != "red") {
                    $(this).mouseenter(function () {
                        $(this).attr("class", "red");
                    });
                    $(this).mouseleave(function () {
                        $(this).attr("class", "green");
                    });
                }
            });
ログイン後にコピー

まあ、私はそれを自分で考え出しました。マウスが event をクリックすると、赤いスタイルが変わりましたが、ポインターは変更しませんでした。保存してください。これが私の変更されたコードです:

 nodeli = $("ul li:first");
            $.each($("li"), function (i, o) {
                $(this).click(function () {
                    allhide();
                    $(this).attr("class", "red");
                    nodeli = $(this);
                    //alert(nodeli.html());
                });
                $(this).mouseover(function () {
                    $(this).attr("class", "red");
                });
                $(this).mouseout(function () {
                    $(this).attr("class", "green");
                    $(nodeli).attr("class", "red");
                    // alert(nodeli.html());
                });
            });
ログイン後にコピー

以上がjqueryはクリック、マウスオーバー、マウスアウトのバブリング問題を解決しないようにしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート