0

私が取り組んでいるページでは、jquery は散発的addClass()にしか機能しません。removeClass()

チェックアウト: http://retype.se/temp/scrolltest/test.html

たとえば、162 ~ 171 行目:

if(direction === 'down'){
     console.log('downer');
 console.log(affected);
 $(affected).removeClass('attached');
 $(affected).removeClass('parked-top');
 $(affected).addClass('parked-bottom');
}

ログに記録する実際の要素を下に書き込みますが、クラスは変更しません。

エラーなどはスローしませんが、無視します。

編集:jsfiddle、http://jsfiddle.net/at9dZ/2/に保存しまし

ご覧のとおり、これらの行の上のアラートのコメントを外すと、アラートが表示されます...

4

1 に答える 1

4

セレクターのキャッシュ方法を確認します。

var affected = $(this).parent('.product').children('.price');

したがってaffected、jQuery セレクターを再度使用する代わりに、オブジェクトを直接操作します。

if (direction === 'down'){
    console.log('downer');
    console.log(affected);
    affected.removeClass('attached');
    affected.removeClass('parked-top');
    affected.addClass('parked-bottom');
}

また、次のことを行うことでこれをきれいにすることができます(実際には砂糖だけです):

affected.removeClass('attached parked-top').addClass('parked-bottom')

コードがブレークポイントで機能しているが、それ以外では機能していない場合は、コードの実行時に DOM が読み込まれておらず、jQuery が要素を「見つけられない」ことを意味します。コードを次のようにラップします。

$(function() {
    // Code here
});

また..

$(document).ready(function(){ 
// Code Here
});

正しく実行されるようにします。

于 2012-08-24T14:19:42.857 に答える