2

アプリにjQueryのドラッグアンドドロップを実装しましたが、IEを除くすべての場所で機能し、ページがウィンドウよりも小さい場合(スクロールバーなし)でも機能します。ページが長すぎてドラッグ可能オブジェクトが下部にある場合、ドラッグするたびにページが上部にジャンプし、アイテムが移動するとコンテンツが激しくちらつきます。誰かがこれを見たことがありますか?ソート可能ファイルを開始するためのコードは、ほとんどワンライナーです。

jQuery('#childrenlist').sortable({items:'div', update:updateChildrenOrder});

更新:次のように、scroll:falseを設定し、コンテナーの高さを設定することで、ぎくしゃくしたちらつきをなくすことができます。

jQuery('#childrenlist').sortable({
    items:'.sortrow', 
    scroll: false,
    update:updateChildrenOrder,
    create:function(){
        jQuery(this).height(jQuery(this).height());
    }
});

ただし、要素のドラッグを開始すると、ドラッグされた要素はページの最上部(画面外)にのみ表示されるため、並べ替えはまだ機能しません。

4

2 に答える 2

1

同じ症状の問題に1日以上費やしました。IEのみでした。より標準に準拠したブラウザには、次のバグはありませんでした。

  1. ダイアログの不安定なドラッグ。
  2. 開いているときのjQueryUIダイアログの位置が中央に配置されていないか、開口部間で記憶されていません。
  3. jQuery UIダイアログのサイズ変更により、子DIVが予期せず縮小しました。

私にとっては、DOCTYPE宣言が欠落していることになりました。これが他の誰かに役立つことを願っています。すべてのDOCTYPEをテストしたわけではありません。私のソリューションはXHTML1.0Strictで証明されました。

同様の問題を調査していると、ウィンドウオフセットの計算に誤りがあるという情報が見つかりました。これは、私にとって理にかなっています。DOCTYPEが役に立たなかったら、私はその角度を追求したでしょう。

于 2013-01-28T16:21:37.853 に答える
0

はい、理由の 1 つは、DOCTYPE 宣言の欠落または不正確である可能性があります。また、IE を quirks モードではなく標準モードで動作させたい場合は、IE の DOCTYPE 宣言の前に何も (コメントも含めて) 置かないでください。Quirks モードは、CSS を正しくレンダリングせず、CSS ボックス モデルに独自の変更を加えます。これは、位置の計算が正しくないため、jQuery のドラッグ アンド ドロップの問題の根本原因となる可能性があります。これを行う:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" >
<title>Insert title here</title>
</head>
<body>
Content here
</body>
</html>
于 2013-02-21T11:16:34.613 に答える