2012-09-25 29 views

cevap

78

Önyükleme işlevi varsayılan olarak sürükleme ve bırakma işleviyle birlikte gelmez, ancak aradığınız efekti elde etmek için karışıma biraz jQuery UI baharatı ekleyebilirsiniz. Örneğin, çerçeveden draggable etkileşimini kullanarak, modal kimliğinizi, modal fonunda sürüklenmesini sağlamak için hedefleyebilirsiniz.

bu deneyin:

JS

$("#myModal").draggable({ 
    handle: ".modal-header" 
}); 

Demo, here düzenleyin.

Güncelleme: bootstrap3 demo

+1

'.modal-header {imleç: move}' ayarlandıktan sonra, bu bir çekicilik gibi çalışır. – DontVoteMeDown

+0

Son bootstrap sürümü üzerinde çalıştığını göremiyorum, 3.3.5. Herhangi bir ipucu? Jquery, 1.11.0 olarak değiştirildi, ancak şans yok. Teşekkürler. – Khrys

+1

Merhaba @Khrys, burada sürüklenebilir modal başlığı, http://output.jsbin.com/vafulubaju ile güncellenmiş bir demo. Bu cevap oldukça eskidir, bu yüzden demodaki bazı JS bağlantılarının kesildiğini tahmin ediyorum). –

8

sürüklenebilir ne olursa olsun gitmek seçeneği sayesinde, Bootstrap CSS dosyasındaki .modal.fade için *-transition özelliklerini kapatmak ya da en azından geçici olarak sürükleyerek sırasında bunları devre dışı bırakır bazı JS yazmak isteyebilirsiniz. Aksi takdirde, modal tam olarak beklediğiniz gibi sürüklenmez.

+2

bu sorun http://stackoverflow.com/questions/15881245/draggable-js-bootstrap-modal-performance-issues – bbodenmiller

0

jquery UI büyüktür ve önyükleme ile çakışabilir.

alternatif

DragDrop.js geçerli: @ user535673 anlaşılacağı gibi http://kbjr.github.io/DragDrop/index.html

DragDrop.bind($('#myModal')[0], { 
    anchor: $('#myModal .modal-header') 
}); 

Hala geçişler uğraşmak zorunda. Sadece soluk sınıfını iletişim penceremden kaldırırım.

2

Bunun gibi küçük bir komut dosyası kullanabilirsiniz.

Draggable without jQuery UI

(function ($) { 
     $.fn.drags = function (opt) { 

      opt = $.extend({ 
       handle: "", 
       cursor: "move" 
      }, opt); 

      var $selected = this; 
      var $elements = (opt.handle === "") ? this : this.find(opt.handle); 

      $elements.css('cursor', opt.cursor).on("mousedown", function (e) { 
       var pos_y = $selected.offset().top - e.pageY, 
        pos_x = $selected.offset().left - e.pageX; 
       $(document).on("mousemove", function (e) { 
        $selected.offset({ 
         top: e.pageY + pos_y, 
         left: e.pageX + pos_x 
        }); 
       }).on("mouseup", function() { 
        $(this).off("mousemove"); // Unbind events from document     
       }); 
       e.preventDefault(); // disable selection 
      }); 

      return this; 

     }; 
    })(jQuery); 

örnekten basitleştirilmiş: $ ("# someDlg") modal() sürükler ({kolu: "modal-başlığı"})..;

+0

adresinde tartışılmış ve çözümlenmiştir. Kodunu denedin ve işe yaradı, ama sürükleyerek buggy. Yukarıdaki bağlantıdan kodu alarak düzeltildi. Lütfen kodunuzu, bağlantıdan gelen birinden güncelleyin. –