Bagaimana cara menonaktifkan jQuery draggable, misalnya selama postback UpdatePanel?
Bagaimana cara menonaktifkan jQuery draggable, misalnya selama postback UpdatePanel?
Jawaban:
Dapat membuat fungsi DisableDrag (myObject) dan EnableDrag (myObject)
myObject.draggable( 'disable' )
Kemudian
myObject.draggable( 'enable' )
Untuk sementara menonaktifkan penggunaan perilaku draggable:
$('#item-id').draggable( "disable" )
Untuk menghapus perilaku draggable secara permanen gunakan:
$('#item-id').draggable( "destroy" )
Untuk mengaktifkan / menonaktifkan draggable di jQuery saya menggunakan:
$("#draggable").draggable({ disabled: true });
$("#draggable").draggable({ disabled: false });
Jawaban @Calciphus tidak berfungsi untuk saya dengan masalah opacity, jadi saya menggunakan:
div.ui-state-disabled.ui-draggable-disabled {opacity: 1;}
Bekerja di perangkat seluler juga.
Ini kodenya: http://jsfiddle.net/nn5aL/1/
memungkinkannonaktifkanbisa diseretjquerykegelapanmasalahhtml
button()
tetapi itu tidak membantu.
Saya butuh sedikit waktu untuk memikirkan cara menonaktifkan draggable saat lepas — gunakan ui.draggable
untuk mereferensikan objek yang ditarik dari dalam fungsi drop:
$("#drop-target").droppable({
drop: function(event, ui) {
ui.draggable.draggable("disable", 1); // *not* ui.draggable("disable", 1);
…
}
});
HTH seseorang
Sepertinya tidak ada yang melihat dokumentasi aslinya. Mungkin tidak ada saat itu))
Inisialisasi draggable dengan opsi nonaktif yang ditentukan.
$( ".selector" ).draggable({ disabled: true });
Dapatkan atau setel opsi nonaktif, setelah init.
//getter
var disabled = $( ".selector" ).draggable( "option", "disabled" );
//setter
$( ".selector" ).draggable( "option", "disabled", true );
Dalam kasus dialog, ini memiliki properti yang disebut draggable, setel ke false.
$("#yourDialog").dialog({
draggable: false
});
Meskipun pertanyaannya sudah lama, saya mencoba solusi yang diusulkan dan tidak berhasil untuk dialog. Semoga ini dapat membantu orang lain seperti saya.
Berikut ini adalah tampilan di dalamnya .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
});
Saya memiliki solusi yang lebih sederhana dan elegan yang tidak mengacaukan kelas, gaya, kekeruhan, dan sebagainya.
Untuk elemen draggable - Anda menambahkan event 'start' yang akan dijalankan setiap kali Anda mencoba memindahkan elemen ke suatu tempat. Anda akan memiliki kondisi dimana perpindahan tersebut tidak sah. Untuk perpindahan yang ilegal - cegah mereka dengan 'e.preventDefault ();' seperti pada kode di bawah ini.
$(".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's position
e.preventDefault();
}
}
});
Sama sama :)