Как отключить перетаскиваемый jQuery, например. во время обратной передачи UpdatePanel?
Как отключить jquery-ui draggable?
Ответ 1
Может создать функцию DisableDrag (myObject) и функцию EnableDrag (myObject)
myObject.draggable( 'disable' )
Тогда
myObject.draggable( 'enable' )
Ответ 2
Чтобы временно отключить поведение перетаскивания, используйте:
$('#item-id').draggable( "disable" )
Чтобы устранить перетаскиваемое поведение, используйте:
$('#item-id').draggable( "destroy" )
Ответ 3
Чтобы включить/отключить перетаскивание в jQuery, я использовал:
$("#draggable").draggable({ disabled: true });
$("#draggable").draggable({ disabled: false });
@Ответ на Calciphus не работал у меня с проблемой непрозрачности, поэтому я использовал:
div.ui-state-disabled.ui-draggable-disabled {opacity: 1;}
Работает и на мобильных устройствах.
Вот код: http://jsfiddle.net/nn5aL/1/
Ответ 4
Мне потребовалось немного времени, чтобы выяснить, как отключить draggable при использовании drop-use ui.draggable
для ссылки на объект, который перетаскивается из функции drop:
$("#drop-target").droppable({
drop: function(event, ui) {
ui.draggable.draggable("disable", 1); // *not* ui.draggable("disable", 1);
…
}
});
HTH кто-то
Ответ 5
Похоже, никто не посмотрел на оригинальную документацию. Может быть, в это время его не было))
Инициализировать перетаскиваемый с отключенной опцией.
$( ".selector" ).draggable({ disabled: true });
Получить или установить отключенную опцию после init.
//getter
var disabled = $( ".selector" ).draggable( "option", "disabled" );
//setter
$( ".selector" ).draggable( "option", "disabled", true );
Ответ 6
В случае диалога у него есть свойство, называемое draggable, установите его в false.
$("#yourDialog").dialog({
draggable: false
});
Несмотря на то, что вопрос старый, я попробовал предлагаемое решение, и он не работал для диалога. Надеюсь, это поможет другим, как я.
Ответ 7
Ниже показано, как это выглядело бы внутри .draggable({});
$("#yourDraggable").draggable({
revert: "invalid" ,
start: function(){
$(this).css("opacity",0.3);
},
stop: function(){
$(this).draggable( 'disable' )
},
opacity: 0.7,
helper: function () {
$copy = $(this).clone();
$copy.css({
"list-style":"none",
"width":$(this).outerWidth()
});
return $copy;
},
appendTo: 'body',
scroll: false
});
Ответ 8
У меня есть более простое и элегантное решение, которое не путается с классами, стилями, непрозрачностью и т.д.
Для перетаскиваемого элемента вы добавляете событие "start", которое будет выполняться каждый раз, когда вы пытаетесь переместить элемент где-нибудь. У вас будет условие, действие которого не является законным. Для движений, которые являются незаконными - предотвратите их с помощью e.preventDefault(); как в приведенном ниже коде.
$(".disc").draggable({
revert: "invalid",
cursor: "move",
start: function(e, ui){
console.log("element is moving");
if(SOME_CONDITION_FOR_ILLEGAL_MOVE){
console.log("illegal move");
//This will prevent moving the element from it position
e.preventDefault();
}
}
});
Добро пожаловать:)
Ответ 9
Измените атрибут draggable
из
<span draggable="true">Label</span>
к
<span draggable="false">Label</span>