1

ここに問題を示すjsFiddleがあります

これが機能しない理由がわかりません:

if ($('#menu').width() == '200px') {
    alert("what");
}

アニメーションが完了したときにアラートが表示されるようにします。したがって、アニメーションが完了すると要素の幅が 200px になるため、アラートが表示されると言えると思いました。

4

4 に答える 4

5

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
  });
});
于 2013-02-28T19:51:01.293 に答える
3

jQuery.widthは数値を返します。文字列と比較しています。

于 2013-02-28T19:49:24.497 に答える
2

更新されたフィドルを確認してください。私がしたことは、アニメーションが完了するたびに実行される「コールバック」関数を追加したことです。

$(this).stop().animate({ width: "200px" }, 250,
  function(){if ($('#menu').width() == '200') { alert("what"); } /* Callback Function */
 });
于 2013-02-28T19:55:41.277 に答える
1

.width()"###px" 値ではなく、数値を返す必要がありif ($('#menu').width() == 200) {ます。

于 2013-02-28T19:51:28.863 に答える