Порядок, в котором связаны библиотеки, имеет значение, если библиотеки зависят друг от друга. В общем случае, если библиотека 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
Чтобы повторить снова, порядок имеет значение!
Может создать функцию DisableDrag (myObject) и EnableDrag (myObject)
myObject.draggable( 'disable' )
Затем
myObject.draggable( 'enable' )
В случае диалога у него есть свойство, называемое draggable, установите его в false.
$("#yourDialog").dialog({
draggable: false
});
Несмотря на то, что вопрос старый, я попробовал предлагаемое решение, и оно не сработало для диалог. Надеюсь, это может помочь другим, как я.
Чтобы включить / отключить перетаскивание в 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] перетаскиваемым JQuery непрозрачности проблемы HTML
У меня есть более простое и элегантное решение, которое не путается с классами, стилями, непрозрачностью и т. д.
Для перетаскиваемого элемента вы добавляете событие «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();
}
}
});
Добро пожаловать:)
Измените атрибут draggable
из
<span draggable="true">Label</span>
на
<span draggable="false">Label</span>
Кажется, никто не посмотрел на оригинальную документацию.
Инициализировать перетаскиваемый с отключенной опцией.
$( ".selector" ).draggable({ disabled: true });
Получить или установить отключенную опцию после init.
//getter
var disabled = $( ".selector" ).draggable( "option", "disabled" );
//setter
$( ".selector" ).draggable( "option", "disabled", true );
Ниже показано, как это будет выглядеть внутри .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
});
Мне потребовалось немного времени, чтобы выяснить, как отключить draggable при использовании drop-use ui.draggable
для ссылки на объект, который перетаскивается из функции drop:
$("#drop-target").droppable({
drop: function(event, ui) {
ui.draggable.draggable("disable", 1); // *not* ui.draggable("disable", 1);
…
}
});
HTH кто-то
Чтобы временно отключить поведение, связанное с перетаскиванием, используйте:
$('#item-id').draggable( "disable" )
Чтобы постоянно удалить поведение перетаскивания, используйте:
$('#item-id').draggable( "destroy" )