JQuery UI's Dialog için (başka bir öğenin sınırıyla sınırlanan) muhafaza eklemek mümkün mü?İçeriği jQuery UI İletişim Kutusu'nda nasıl belirlerim?
cevap
İletişim kutusunu hedefleyebilir ve bunun için bir sınırlama uygulayabilirsiniz. Bu deneyin:
var container = $('.dialog-container'),
dialog = $('.ui-dialog');
// get container top left corner locations
var cx1 = container.offset().left,
cy1 = container.offset().top;
// get dialog size
var dw = dialog.outerWidth(),
dh = dialog.outerHeight();
// get container bottom right location, then subtract the dialog size
var cx2 = container.width() + cx1 - dw,
cy2 = container.height() + cy1 - dh;
dialog.draggable("option", "containment", [cx1, cy1, cx2, cy2]);
Edit: Senin için a demo kurdu.
Edit2: doğru yolda Mottie en @ iletişim outerWidth & outerHeight
kullanmaya değiştirildi, ancak daha basit ve daha iyi bir çözüm var: viewport boyutlandırır eğer
var container = $('.dialog-container'),
dialog = $('.ui-dialog');
dialog.draggable("option", "containment", container);
Mottie çözümüyle aksine, bu kırılmaz. JSFiddle here'u çatallandırdım.
+1 Bu yardımcı oldu. Ayrıca, 'konteyner' aslında 'iletişim' elemanının ebeveyni olmadığına dikkat edin. Diyaloğun hareketini kısıtlamak istediğiniz herhangi bir unsur olabilir. – Nikhil
@Nikhil: Evet, kesinlikle belirtmeye değer. Bunu eklediğiniz için teşekkürler! – Mac
Ayrıca, [resizable 'widget'ının muhafazasını ayarlamanız gerekir] (https://stackoverflow.com/a/44401699/616460) ya da yeniden boyutlandırırken sınırları geçebilirsiniz. –
@ Mac doğru yolda, ancak çözüm tamamlanmadı. numaralı telefonun numaralı telefonu kullanmanız gerekiyor, ayrıca iletişim kutusunun Resizable widget'inin içeriklerini de ayarlayınız. Yalnızca Sürüklenebilir'i ayarlarsanız, sürüklediğinizde içerik alırsınız, ancak kenarları yakaladığınızda ve yeniden boyutlandırdığınızda hala sınırlar dışına çıkarsınız.
#mydialog
iletişim kutusundan ilk önce oluşturduğunuz öğe ve #boundary
ile sınırlamak istediğiniz öğedir (bu arada, kapsayıcı parametresi de bir seçici olabilir). :
let ui = $('#mydialog').closest('.ui-dialog'); // get parent frame
ui.draggable('option', 'containment', '#boundary'); // <-- drag, but not resize
ui.resizable('option', 'containment', '#boundary'); // <-- don't forget!!!
bu örnek bir pasajı 'document'
(varsayılan) ve '#area'
arasındaki karşılık gelen pencere öğesinin hapsini geçiş için onay geçiş, bu. Ardından, iletişim kutusunu, başlık çubuklarıyla, ve kenarlarından yeniden boyutlandırarak sürükleyerek deneyin. Yalnızca select "sürükle sınırlandırın" ne olur Not: Şunu çevreleme tarafından
// Create dialog from #win with mostly default options.
$('#win').dialog({
width: 200,
height: 150,
position: { my: 'center', at: 'center', of: '#area' }
});
// When checkbox changed, update confinement settings.
$('#draggable, #resizable').change(function() {
let d = $('#draggable').prop('checked');
let r = $('#resizable').prop('checked');
let ui = $('#win').closest('.ui-dialog');
ui.draggable('option', 'containment', d ? '#area' : 'document');
ui.resizable('option', 'containment', r ? '#area' : 'document');
});
#area {
position: relative;
left: 2ex;
top: 2ex;
width: 400px;
height: 300px;
border: 1px solid red;
}
#win {
font-size: 10pt;
display: flex;
flex-direction: column;
}
label {
display: flex;
align-items: center;
}
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
</head>
<body>
<div>Example</div>
<div id="area"></div>
<div id="win" title="test">
<label><input type="checkbox" id="draggable">Contain drag</label>
<label><input type="checkbox" id="resizable">Contain resize</label>
</div>
</body>
- 1. İletişim kutusuyla jQuery UI iletişim kutusunda yeniden boyutlandırın?
- 2. Jquery UI iletişim kutusunda birden çok düğme nasıl eklenir?
- 3. jquery iletişim kutusunda düğmesine tıklayın
- 4. Jquery UI Dialog içinde giriş gönderilmiyor mu? Benim iletişim kutusunda
- 5. Php jquery iletişim kutusunda nasıl yankılanır?
- 6. jQuery UI İletişim + Doğrulama
- 7. jQuery UI iletişim kutusu
- 8. jquery ui iletişim kutusu onayla
- 9. jQuery UI iletişim Kodun altında
- 10. jquery ui iletişim kutusunu kapatın
- 11. jqueryui iletişim kutusunda tıklayın clicker
- 12. İletişim kutusunda bölücü satırı
- 13. İletişim Kutusunda Web Görünümü
- 14. EditText iletişim kutusunda
- 15. Alert iletişim kutusunda TextView
- 16. jQuery UI İletişim Kutusu/Sürümü Soru
- 17. JQuery UI İletişim kutuları: uygulama genelinde seçenekler
- 18. jQuery-UI İletişim Kutusu Bellek Sızıntıları
- 19. jQuery ui tam ekran iletişim kutusu
- 20. jQuery UI modal iletişim kutusu engellenmiyor
- 21. jQuery UI İletişim Kutuları Değişkenlerden Düğmeler
- 22. jQuery UI SetTimeout'u Kullanarak İletişim Otomatik Kapama
- 23. jQuery UI İletişim kutusu durdurma olayı
- 24. jQuery UI İletişim Kutusu ve metin girişi
- 25. jQuery UI iletişim kutusu pencere kaydırma çubuğunu Google Chrome'da engelleme
- 26. jquery iletişim kutusunda azure depolama depolanan belge görüntülemek ve indirilmemelidir
- 27. Uygulamamın adını UAC iletişim kutusunda nasıl denetlerim?
- 28. Düzenleme iletişim kutusunda null doğrulaması nasıl ayarlanır
- 29. Uzak bir içeriği jquery ile iletişim kutusuna nasıl yüklerim?
- 30. CHOOSECOLOR iletişim kutusunda yazı tipini değiştirme
....? Burada neyin peşindeyim, açıklığa kavuşturamıyorum? –
Peki, iletişim kutusunun sürüklenebileceği alanı belirtmek istiyorum. Şimdi tarayıcı penceresinin her yerinden sürüklenebilir .. – PPPHP