2011-07-14 132 views
12

jQuery UIダイアログを使用します。jQuery UIダイアログ/ドラッグ質問

素晴らしいですが、現在、ダイアログをドラッグすると、画面外に移動することはありません(ダイアログ全体が常にビューポート内にあります)。

ダイアログを部分的にドラッグするようにダイアログを設定する方法はありますか?

+0

なぜ画面から部分的に移動したいのですか? –

+7

@ViswanathanIyer:時々、あなたはそれの下にあるものを見るために少し外にそれを動かす必要があります。他の理由もあると確信していますが、問題は**どうですか?**、理由はありません。 –

+0

@ViswanathanIyer:主な領域をカバーしていますが、その領域を変更するツールが含まれているため、ダイアログが表示され、少し微調整してから変更を確認するためにドラッグします。今すぐ、彼らはそれを閉じて、それを再び開く必要があります。 – OneNerd

答えて

10

確かに(位置x、yは、ビューポート内にある場合、有効な)ただ、このコードが含まれます'を封じ込めを無効にするfalseとする。

+0

ありがとうございます - 私はこれを試して、私が思いつくことができるものを見ていきます。 – OneNerd

+0

私はこの修正プログラムを実装しようとしていますが、これまでの運はありません。私はdocreadyのscript.jsファイルの外に読み込んでいます。 (docready内部でも動作しませんでした)。 これはグローバルな変更のようです。どうやら各ダイアログに関連付ける必要がありますか? – CoryDorning

+0

無視...うまく動作します。 – CoryDorning

2

オプションのpositionで再生します。ボックスを移動するには、独自のJavaScript呼び出しを記述します。

$('#dialog').dialog('option','position',[500, 100]); 

しかし、あなたは(それが有効な位置をチェックするコードブロックを更新し、jqueryのUIダイアログを拡張し、あなたがそのような機能を持つようにしたい場合は、あなた自身を書き、ビューポートの外箱を移動することはできません。

$.ui.dialog.prototype._makeDraggable = function() { 
    this.uiDialog.draggable({ 
     containment: false 
    }); 
}; 

それは「ドキュメントの既定の封じ込め値を上書きします:あなたはjQueryのダイアログのコードを拡張することができた場合

3

私はこの同じ問題を抱えており、betamax's solutionを使用しようとしていましたが、jQuery UIの組み込み機能の一部を効果的に置き換えることに気付きました。だからではなく、私は完全にそれを交換する機能が内蔵され続けるが、また、_makeDraggableをオーバーライドするのではなくによる封じ込めをオフにするアプローチを適応:

if (!$.ui.dialog.prototype._makeDraggableBase) { 
    $.ui.dialog.prototype._makeDraggableBase = $.ui.dialog.prototype._makeDraggable; 
    $.ui.dialog.prototype._makeDraggable = function() { 
     this._makeDraggableBase(); 
     this.uiDialog.draggable("option", "containment", false); 
    }; 
} 
16

それとも、より単純で、「jQueryの道」でそれを行うことができます。 )

 
$(document).ready(function(){ 
    $('#dialog'). 
    dialog({ 
     //your dialog options go here 
    }). 
    dialog("widget").draggable("option","containment","none"); //this chained sequence kills containment 
}); 
+1

あなたは男です! ダイアログを特定のdiv(「none」から「#mydiv」に変更)に制限する必要がありました。これが解決策です。 –

+3

ありがとう... "もっとjQueryの方法" +1。 – Aries