Я прочитал сообщение о том, как сделать загрузочные модальности Draggrap, которые я могу сделать, позвонив:
$(this).draggable({
handle: ".modal-header"
});
Там, где диалог создается на странице.
Проблема в том, что у меня много диалогов во всей моей системе, и я хочу сделать их перетаскиваемыми без необходимости находить каждый экземпляр диалога и отбрасывать этот фрагмент кода.
Есть ли способ перетащить все диалоги по умолчанию?
Я пытался:
$('.modal').on('show', function(){
$(this).draggable({
handle: ".modal-header"
});
})
В моем глобальном скрипте, но он ничего не делает.
Попробуй:
$(document).ready(function() {
$(".modal").each(function(i) {
$(this).draggable({
handle: ".modal-header"
});
});
});
ОБНОВИТЬ
Чтобы использовать перетаскиваемый плагин для использования динамически созданного элемента
(function ($) {
$.fn.dynamicDraggable = function (opts) {
this.live("mouseover", function() {
if (!$(this).data("init")) {
$(this).data("init", true).draggable(opts);
}
});
return this;
};
}(jQuery));
И используйте его как
$(".modal").dynamicDraggable({
handle: ".modal-header"
});
Это сработало для меня:
$('.modal').draggable({
handle: ".modal-content"
});
Это найдет все элементы html с классом modal и сделает их перетаскиваемыми.
Я использовал ".modal-content" вместо "modal-header", потому что я не хочу, чтобы пользователи застревали, если они слишком сильно тащили модальный экран. С ".modal-content" они могут перетащить его обратно со дна модального.
Обратите внимание, что для этого вам необходимо использовать JQuery UI.
Используйте document.ready(), чтобы все модалы были загружены до применения этого кода.
Если вы используете AngularJS, как я, и имеете несколько контроллеров и представлений, или не все ваши модальности доступны в DOM изначально, вы можете использовать ng-init для каждого модального div, чтобы вызвать функцию, которая заставляет их перетаскивать.
HTML:
<div class="modal" ng-init="makeDraggable()">
Javascript:
$rootScope.makeDraggable = function () {
$('.modal').draggable({
handle: ".modal-content"
});
$('.modal').addClass('click');
};