Технический сбой

Сайт временно работает в режиме только для чтения, идут восстановительные работы. Приносим свои извинения за неудобства.
DLE FAQ » Сниппеты » JS Сниппеты » Перетаскиваемый блок без использования jQueryUI

Перетаскиваемый блок без использования jQueryUI


     31.05.2013    сниппет, drggable, jquery, перетаскиваемый блок    JS Сниппеты    5831

Часто бывает нужно сделать перетаскиваемый блок?
Но ведь подключать монструозную библиотеку jQueryUI ради одного-двух блоков не имеет смысла.
Простой плагин для jquery решит проблему, если не нужны все возможности jQueryUI
Плагин:
(function($) {
    $.fn.drags = function(opt) {

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

        if(opt.handle === "") {
            var $el = this;
        } else {
            var $el = this.find(opt.handle);
        }

        return $el.css('cursor', opt.cursor).on("mousedown", function(e) {
            if(opt.handle === "") {
                var $drag = $(this).addClass('draggable');
            } else {
                var $drag = $(this).addClass('active-handle').parent().addClass('draggable');
            }
            var z_idx = $drag.css('z-index'),
                drg_h = $drag.outerHeight(),
                drg_w = $drag.outerWidth(),
                pos_y = $drag.offset().top + drg_h - e.pageY,
                pos_x = $drag.offset().left + drg_w - e.pageX;
            $drag.css('z-index', 1000).parents().on("mousemove", function(e) {
                $('.draggable').offset({
                    top:e.pageY + pos_y - drg_h,
                    left:e.pageX + pos_x - drg_w
                }).on("mouseup", function() {
                    $(this).removeClass('draggable').css('z-index', z_idx);
                });
            });
            e.preventDefault(); // disable selection
        }).on("mouseup", function() {
            if(opt.handle === "") {
                $(this).removeClass('draggable');
            } else {
                $(this).removeClass('active-handle').parent().removeClass('draggable');
            }
        });

    }
})(jQuery);

Инициализация:
jQuery(document).ready(function($) {
    $('.dragme').drags();
});
Демо

1 комментарий

websot
Юзер

websot - -

Можно ли применять 1 ID параметр к нескольким блокам или можно через (запятую - не профи по JS) использовать данный плагин?


Server restriction: dle-faq.ru Server restriction: www.dle-faq.ru ------ LICENSE FILE DATA ------- VU009X5YSAjbcTro6oQIH1pF0S0tHxw6 X3utgKa7k/J1knblsjqyrOfrKZkgtoH/ zjlbst4p/kmDl5KZkd2dnt5KCGOclpIJ f15Iv1BnJzXfiaZG1x35jbi5OyKhVog3 jd7sUxVMvMgUO2gUyN1fsV9o0h27MrO3 UanDBpzJbgVvUjZys0NIDuOtCgzaFIKA 3HWMRbEgADHgY0K1T7ns1t0vCFW7aDKF 5DuZpCjs2D5tIyIrfctUB1i5WiSouPDg vl2Qsrzc0NrTJ+ebSEUrnhyDjWMy7rQA Pn3LGNCiOmMRuIOLBp+NmN7hL2k/JSzd JpeoQ5gzGRR8zt7F5ZIdIcZuTfZ8+/zD dI6KQJJeu0HsU7Ra3AXJU0EkiXg8vjtd Tq6ebBesu4jGLfslfVw01bJRQz1+/OtW EmutMaoSt+S6Goja5MvWrBxW3c3v8pTF HYfzbGtLJynavG9SpPrXEFKakmD92uVk lFhOxFVAbiCq0JS8K6p3 -------------------------------- Server restriction: dle-faq.ru Server restriction: www.dle-faq.ru ------ LICENSE FILE DATA ------- VU009X5YSAjbcTro6oQIH1pF0S0tHxw6 X3utgKa7k/J1knblsjqyrOfrKZkgtoH/ zjlbst4p/kmDl5KZkd2dnt5KCGOclpIJ f15Iv1BnJzXfiaZG1x35jbi5OyKhVog3 jd7sUxVMvMgUO2gUyN1fsV9o0h27MrO3 UanDBpzJbgVvUjZys0NIDuOtCgzaFIKA 3HWMRbEgADHgY0K1T7ns1t0vCFW7aDKF 5DuZpCjs2D5tIyIrfctUB1i5WiSouPDg vl2Qsrzc0NrTJ+ebSEUrnhyDjWMy7rQA Pn3LGNCiOmMRuIOLBp+NmN7hL2k/JSzd JpeoQ5gzGRR8zt7F5ZIdIcZuTfZ8+/zD dI6KQJJeu0HsU7Ra3AXJU0EkiXg8vjtd Tq6ebBesu4jGLfslfVw01bJRQz1+/OtW EmutMaoSt+S6Goja5MvWrBxW3c3v8pTF HYfzbGtLJynavG9SpPrXEFKakmD92uVk lFhOxFVAbiCq0JS8K6p3 --------------------------------
наверх