0

まれな問題があります。jQueryのバグかもしれませんが、どうすれば解決できるのかわかりません。

以下のメソッドを使用して要素をホバーしている間、要素の長さを監視していました。

問題は、追加された要素 'el' の長さがhide() + スライドの使用中に 0 を返すことです

hover(
  function() {
    if (!trigger.next('#id').length)    // if #id not exsist, add html
      el = trigger.after(html).next('#id') // el = new added html
    else
      el = trigger.next('#id')
    el.stop(true, true).show('slide', { direction, 'left' })  
  }, 
  function() { 
    el.hide('slide', { direction, 'left' }) 
});

別のメソッドhide() <-hide、animate()、fadeOut() に切り替えると、すべて1が返されます。

追加された html は存在します。ただし、 hide()+スライド中は長さが戻りませんので、

ただし、 hide() + slide が終了すると、 1が返されます。

この問題の解決にご協力ください。

問題 el.lengthが 0 を返し、el が存在していても hide() + スライドすることです

アドバイスありがとうございます。

サンプルを作成しましたので、ご確認ください

http://jsfiddle.net/fantill/DFd7e/6/

4

1 に答える 1

1

jQuery beta 2.0を使用している理由はありますか? 言及する価値があったでしょう。

jQuery 2.0.0b1と互換性があるとは思えないjQuery UIも使用しています。

jQuery を v1.9 に変更したところ、機能しているように見えます。ブラケットとコンマも追加しました。

これはより整頓されています:

if( !$('#B').length ) 
{
   el = $(this).after('<div id="B" style="display:none; width:50px; height:50px; background-color:#09F; ">YYYYYYYYY</div>').next('#B');
} 
else 
{
    el = $('#B');
}

これが更新されたフィドルです: http://jsfiddle.net/DFd7e/9/

$(this).next('#B').first().length 編集: jQuery UI を有効にし、これを :に置き換えまし$('#B').lengthた。

next()jQuery UI がアニメーション化している div の周りにラッパーを追加しているため、あなたのケースでは機能しません。開発ツールを開くと表示されます。

更新されたフィドル: http://jsfiddle.net/DFd7e/11/

于 2013-01-17T12:21:48.323 に答える