1

jQueryで親パスを追跡するより良い方法を尋ねたかっただけですが、現在これを行っています。

$('.qBox em a').hover(
    function(){
        $(this).parent().parent().find('.overlayIMG').fadeIn(100);
    },
    function(){
        $(this).parent().parent().find('.overlayIMG').fadeOut(100);
    }
);

しかし、私はこのようなことをしたかったのです(以下のコードは、私が知らない何らかの理由で機能しません)。この問題を適切に検索する方法がわかりません。すでに親と親のパスを追跡しようとしましたが、答えが見つからないので、しばらくお邪魔します。

$('.qBox em a').hover(
    var biggerImage = $(this).parent().parent().find('.overlayIMG');
    function(){
        biggerImage.fadeIn(100);
    },
    function(){
        biggerImage.fadeOut(100);
    }
);

これは HTML マークアップです

<div class="qBox">
    <em>
          <img src="images/homepagethumbOL.png" class="overlayedIcon">
          <a href="#"><img src="images/sample_box.jpg"></a>
    </em>
    <span>
        <h3><a href="#">Article Title Looks Like This or Longer</a></h3>
        <p>Curabitur zblandit tempus porttitor. Donec ullamcorper.</p>
        <a href="#">view <i>45</i> comments</a>
        </span>
    <img src="images/sampleBig.jpg" class="overlayIMG one">
</div>
4

2 に答える 2

3

each()要素を繰り返し処理し、.overlayIMG1 回だけ検索するために使用できます。

$('.qBox em a').each(function(){
    var overlay = $(this).parent().parent().find('.overlayIMG');

    $(this).hover(
        function(){
            $(overlay).fadeIn(100);
        },
        function(){
            $(overlay).fadeOut(100);
        }
    );
});
于 2013-07-12T09:11:38.640 に答える
0

変数を宣言した場所で変数を宣言することはできません-構文的に正しくありません。thisただし、ホバースコープの外で宣言すると、キーワードを使用できません。

jQuery のdata()機能を使用できます。

$('.qBox em a').hover(
function ()
{
    var data = $(this).data(this, "data");
    if (data.img == undefined)
    {
        data = { img: $(this).parent().parent().find('.overlayIMG') };
        $(this).data(this, "data", data);
    }

    $(data.img).fadeIn(100);
},
function ()
{
    var data = $(this).data(this, "data");
    $(data.img).fadeOut(100);
});

これにより、画像参照がa保存されますが、ホバー機能が起動されたときにのみ保存されます。

于 2013-07-12T09:08:41.110 に答える