3

$(this) キーワードの理解と使用に問題があります。たとえば、http://api.jquery.com/hover/の hover クラスの例を使用すると、

HTML

 <ul>
    <li>Milk</li>
    <li>Bread</li>
    <li class='fade'>Chips</li>
    <li class='fade'>Socks</li>
</ul>

<div class='fade'>My Div<div>

Jクエリ

<li>これにより、すべての要素に関数が追加されます。

$("li").hover(
    function () {
        $(this).append($("<span> ***</span>"));
    },
    function () {
        $(this).find("span:last").remove();
    }
);

フェードクラスにのみ関数を追加したい場合。この方法でできました

$("li.fade").hover(
    function () {
        $(this).append($("<span> ***</span>"));
    },
    function () {
        $(this).find("span:last").remove();
    }
);

これにより、DIV を含むすべてのフェード クラスが選択されます。

 $("li").hover(
        function () {
            $('.fade').append($("<span> ***</span>"));
        },
        function () {
            $('.fade').find("span:last").remove();
        }
    );

なぜこれがうまくいかないのですか?

$("li").hover(
    function () {
        $(".fade", this).append($("<span> ***</span>"));
    },
    function () {
        $(".fade", this).find("span:last").remove();
    }
);

jQueryを学ぼうと勉強中です。ありがとう!

4

1 に答える 1

5

呼び出しは、で表される要素内の$(".fade", this)クラスを持つ要素を検索します。と同じです。fadethis$(this).find(".fade")

イベントが発生したthis要素である要素と同様に、クラスはその要素にあり、その要素の子である要素にはないため、何も見つかりません。hoverli

于 2013-03-03T19:33:26.500 に答える