1

正しく機能していない if ステートメントがあります。これは「this」を使用しているためだと思いますが、修正方法がわかりません。これはコードです:

$('.enlarge').click(function() {
    var id = $(this).find(".enlarged_txt").attr('id');
    $('#full_image').animate({
        height: "100%"
    }, 300, function() {

    if ( $(this).hasClass("v") ) {   
        $('#full_image img').attr('src','http://www.klossal.com/klossviolins/instruments/violins/full/' + id + '.jpg');
        fadeIn($('#full_image img'));
        $("#close_2").css({
            display: "block"
        });
        $("#close").css({
            display: "block"
        });            
    }

    });
});




        <div class="enlarge v" style="float:right;margin-right:70px;margin-top:5px;">
            <img class="enlarged_unselected" style="float:left;margin-top:6px;" src="http://www.klossal.com/klossviolins/elements/fullscreen_unselected.png"/>
            <img class="enlarged_selected" style="float:left;display:none;" src="http://www.klossal.com/klossviolins/elements/fullscreen_selected.png"/>
            <div id="ChasHunnicutt_1928" style="float:left;padding-left:8px;" class="enlarged_txt">Enlarge Image</div>
        </div>
4

1 に答える 1

6

はい、これには問題がありthisます。2 回目に使用するときは、呼び出しthis内の新しい関数で使用するためです。animate(今回は、(この jQuery doc によると)「DOM 要素がアニメーション化される」thisというthis参照を使用します。

thisによって渡されたオリジナルを参照する場合は、. click(トップレベルの関数 (クリックされている DOM 要素を参照する) へのハンドラを作成するには、最初にそれを保存してから、2 番目thisを元の への保存された参照に置き換える必要がありますthisキーワードは楽しいです。

そのようです :

$('.enlarge').click(function() {
    var jthis = this; // save the reference to the $('.enlarge') that was clicked
    var id = $(this).find(".enlarged_txt").attr('id');
    $('#full_image').animate({
        height: "100%"
    }, 300, function() {

    if ( $(jthis).hasClass("v") ) {   
        $('#full_image img').attr('src','http://www.klossal.com/klossviolins/instruments/violins/full/' + id + '.jpg');
        fadeIn($('#full_image img'));
        $("#close_2").css({
            display: "block"
        });
        $("#close").css({
            display: "block"
        });            
    }
    });
});

の問題を修正する必要がありますthis

于 2013-01-31T12:05:50.373 に答える