JqueryUI draggable disable не работает [дубликат]

Порядок, в котором указаны взаимозависимые связанные библиотеки, неверен.

Порядок, в котором связаны библиотеки, имеет значение, если библиотеки зависят друг от друга. В общем случае, если библиотека A зависит от библиотеки B, тогда libA ДОЛЖЕН появляться перед libB в флагах компоновщика.

Например:

// B.h
#ifndef B_H
#define B_H

struct B {
    B(int);
    int x;
};

#endif

// B.cpp
#include "B.h"
B::B(int xx) : x(xx) {}

// A.h
#include "B.h"

struct A {
    A(int x);
    B b;
};

// A.cpp
#include "A.h"

A::A(int x) : b(x) {}

// main.cpp
#include "A.h"

int main() {
    A a(5);
    return 0;
};

Создайте библиотеки:

$ g++ -c A.cpp
$ g++ -c B.cpp
$ ar rvs libA.a A.o 
ar: creating libA.a
a - A.o
$ ar rvs libB.a B.o 
ar: creating libB.a
a - B.o

Скомпилируйте:

$ g++ main.cpp -L. -lB -lA
./libA.a(A.o): In function `A::A(int)':
A.cpp:(.text+0x1c): undefined reference to `B::B(int)'
collect2: error: ld returned 1 exit status
$ g++ main.cpp -L. -lA -lB
$ ./a.out

Чтобы повторить снова, порядок имеет значение!

90
задан sshow 16 January 2014 в 11:30
поделиться

9 ответов

Может создать функцию DisableDrag (myObject) и EnableDrag (myObject)

myObject.draggable( 'disable' )

Затем

myObject.draggable( 'enable' )
138
ответ дан madcolor 27 August 2018 в 08:24
поделиться

В случае диалога у него есть свойство, называемое draggable, установите его в false.

$("#yourDialog").dialog({
    draggable: false
});

Несмотря на то, что вопрос старый, я попробовал предлагаемое решение, и оно не сработало для диалог. Надеюсь, это может помочь другим, как я.

6
ответ дан Andrei C 27 August 2018 в 08:24
поделиться

Чтобы включить / отключить перетаскивание в jQuery, я использовал:

$("#draggable").draggable({ disabled: true });          

$("#draggable").draggable({ disabled: false });

@ Ответ Calciphus не работал для меня с проблемой непрозрачности, поэтому я использовал:

div.ui-state-disabled.ui-draggable-disabled {opacity: 1;}

Работала также на мобильных устройствах.

Вот код: http://jsfiddle.net/nn5aL/1/

[д2] отключить [/ д2]

15
ответ дан CarinaPilar 27 August 2018 в 08:24
поделиться

У меня есть более простое и элегантное решение, которое не путается с классами, стилями, непрозрачностью и т. д.

Для перетаскиваемого элемента вы добавляете событие «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's position
                e.preventDefault();
            }    

        }
    });

Добро пожаловать:)

3
ответ дан Combine 27 August 2018 в 08:24
поделиться

Измените атрибут draggable из

<span draggable="true">Label</span>

на

<span draggable="false">Label</span>
0
ответ дан ddagsan 27 August 2018 в 08:24
поделиться

Кажется, никто не посмотрел на оригинальную документацию.

Инициализировать перетаскиваемый с отключенной опцией.

$( ".selector" ).draggable({ disabled: true });

Получить или установить отключенную опцию после init.

//getter
var disabled = $( ".selector" ).draggable( "option", "disabled" );
//setter
$( ".selector" ).draggable( "option", "disabled", true );
9
ответ дан makaroni4 27 August 2018 в 08:24
поделиться

Ниже показано, как это будет выглядеть внутри .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
});
3
ответ дан maudulus 27 August 2018 в 08:24
поделиться

Мне потребовалось немного времени, чтобы выяснить, как отключить draggable при использовании drop-use ui.draggable для ссылки на объект, который перетаскивается из функции drop:

$("#drop-target").droppable({
    drop: function(event, ui) {
        ui.draggable.draggable("disable", 1); // *not* ui.draggable("disable", 1);
        …
    }
});

HTH кто-то

11
ответ дан Oli Studholme 27 August 2018 в 08:24
поделиться

Чтобы временно отключить поведение, связанное с перетаскиванием, используйте:

$('#item-id').draggable( "disable" )

Чтобы постоянно удалить поведение перетаскивания, используйте:

$('#item-id').draggable( "destroy" )
61
ответ дан PhilB 27 August 2018 в 08:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: