-1

マウスオーバー機能とマウスアウト機能をシリーズ クラスに追加したいと考えています。そこで、ループ内の変数で JQ セレクターを使用します。

for(i=1;i<=2;i++){
    cid='.Cid'+i;
    ccid='.CCid'+i;
    csid='.CSid'+i;     
    $(cid).mouseover(function(){
    $(ccid).addClass("RelatedMainComment");
    $(csid).addClass("RelatedMainComment");
    });
    $(cid).mouseout(function(){
        $(ccid).removeClass("RelatedMainComment");
        $(csid).removeClass("RelatedMainComment");
    });
    }

しかし、正しく動作しません。最後の 1 つのクラスを追加しているようです。この例では、クラス「Cid2」、マウスオーバーおよびマウスアウト関数です。そこで、別の実験を行います。

i=1;
    cid='.Cid'+i;
    ccid='.CCid'+i;
    csid='.CSid'+i;     
    $(cid).mouseover(function(){
    $(ccid).addClass("RelatedMainComment");
    $(csid).addClass("RelatedMainComment");
    });
    $(cid).mouseout(function(){
        $(ccid).removeClass("RelatedMainComment");
        $(csid).removeClass("RelatedMainComment");
    });
    i=2;

結果は前者と同じです。また、コードが次の場合:

        for(i=2;i>=1;i--){
    cid='.Cid'+i;
    ccid='.CCid'+i;
    csid='.CSid'+i;     
    $(".Cid"+i).mouseover(function(){
    $(".CCid"+i).addClass("RelatedMainComment");
    $(".CSid"+i).addClass("RelatedMainComment");
    });
    $(".Cid"+i).mouseout(function(){
        $(".CCid"+i).removeClass("RelatedMainComment");
        $(".CSid"+i).removeClass("RelatedMainComment");
    });
    }

うまくいきません。理由を説明できますか?

4

2 に答える 2

1

変数は、 マウスオーバーしたときにccidのみステートメントで使用されます。$(ccid).addClass("RelatedMainComment");$(cid)

その時までに の値ccidはもはやではなく'.CCid'+i、すでになっている'.CCid2'ため、期待どおりに機能しません。

ccid関数内の変数を のままにするための 1 つの解決策は、 event.data'.CCid'+iを使用することです。

于 2013-10-12T15:24:48.890 に答える