これが機能しない理由がわかりません:
if ($('#menu').width() == '200px') {
alert("what");
}
アニメーションが完了したときにアラートが表示されるようにします。したがって、アニメーションが完了すると要素の幅が 200px になるため、アラートが表示されると言えると思いました。
これが機能しない理由がわかりません:
if ($('#menu').width() == '200px') {
alert("what");
}
アニメーションが完了したときにアラートが表示されるようにします。したがって、アニメーションが完了すると要素の幅が 200px になるため、アラートが表示されると言えると思いました。
1) アニメーションが完了する前に値を確認しています。
2)幅の値は「200px」ではなく「200」になります
ここにjQueryのドキュメントがあります。コードのコールバック セクションでチェックを実行する必要があります。
$('#clickme').click(function() {
$('#book').animate({
opacity: 0.25,
left: '+=50',
height: 'toggle'
}, 5000, function() {
// Animation complete. <---- your value check code goes here
});
});
jQuery.widthは数値を返します。文字列と比較しています。
更新されたフィドルを確認してください。私がしたことは、アニメーションが完了するたびに実行される「コールバック」関数を追加したことです。
$(this).stop().animate({ width: "200px" }, 250,
function(){if ($('#menu').width() == '200') { alert("what"); } /* Callback Function */
});
.width()
"###px" 値ではなく、数値を返す必要がありif ($('#menu').width() == 200) {
ます。