0

私はこのコードに苦労していて、それがバグなのか悪いコーディングなのか理解できませんか?!どんな助けでも大歓迎です。

$('.showDiv').live({
  click: function () {
    $('#myDiv').show(function () {
      // DO SOMETHING AFTER SHOW DIV COMPLETES
      // THE PROBLEM IS THAT I CAN'T MAKE DIV SIMPLY SHOW WITHOUT EFFECT!
    });
  }, mouseenter: function () {
    // ...
  }, mouseleave: function () {
    // ...
  }
});

チェーンイベントはすべてうまく機能しますが(click:、mouseenter:、mouseleave :)、$('#myDiv').show(function () {...}常にデフォルトの「swing」で表示を実行します。これにより、必要なものが台無しになります。効果や遅延なしでdivを表示するだけです。

不思議なことに、コールバック関数を使用しない場合$('#myDiv').show();、divだけが希望どおりに表示されます-すぐに効果はありません...バグかどうか疑問に思いますか?

私はショーのようにargsで試しました$('#myDiv').show(100, function () {...}$('#myDiv').show(0, '', function () {...}、divは常にスイング効果で表示されます。

注:ライブは減価償却されるため、私も試してみまし.on()たが、結果はまったく同じです。

ヘルプやヒントはありますか?ありがとう。

4

3 に答える 3

3

に引数を渡さない.show()でください、文書化されている、および実験で明らかになったように。

パラメーターがない場合、この.show()メソッドは要素を表示する最も簡単な方法です。一致した要素は、アニメーションなしですぐに表示されます。

于 2013-01-28T04:10:13.987 に答える
1

に切り替える必要があります.onが、それとは関係ありません。

のドキュメントを.show見ると、最初の引数としてコールバックを持つメソッドの形式がないことがわかります。

アニメーションを実行したくない場合は、操作が即座に完了するため、コールバックを使用する必要はありません。非同期アニメーションの完了後にコールバックが必要な場合にのみ、コールバックを使用する意味があります。

本当に必要な場合は を使用できます.show(0, function () { ... })が、実際には意味がありません。

于 2013-01-28T04:11:23.200 に答える
-1

jQuery 1.7 以降、.live() メソッドは非推奨になりました。.on() を使用して、イベント ハンドラーをアタッチします。

jQuery .onのドキュメントを確認してください

アップデート

$('.showDiv').live({
 click: function () {
   $('#myDiv').show(0,function () {
  // pass duration parameter first. 0 milisec 
  alert('myDiv is visible.');
});
 }, mouseenter: function () {
// ...
 }, mouseleave: function () {
// ...
 }
});
于 2013-01-28T04:10:33.537 に答える