2011-11-21 11 views
27

Mam kilka elementów. Niektóre są przeciągalne, niektóre są zrzucane, a niektóre są jednocześnie. Jak mogę wykryć, czy element jest przeciągalny lub można go zrzucić?Jak sprawdzić, czy element jest zrzucany, przeciągalny lub inny "ble"?

+0

Dlaczego nie można używać oryginalnego selektor używany podczas uruchamianiu 'droppable' lub' draggable'? – zzzzBov

+0

@zzzzBov, mój conrol jest ładowany za pomocą AJAX, więc nie wiem, co się stało w dokumencie. –

+0

proszę pokazać kod. Nie mam pojęcia, o czym mówisz. Jeśli wysyłasz kod HTML za pośrednictwem AJAX, dlaczego ma to wpływ na to, czy element można przeciągnąć, czy zrzucić? – zzzzBov

Odpowiedz

25

Można także wykorzystywać dane jquery() tak ..

if ($(elem).data('draggable')) { 
     alert("yes"); 
} 
else { 
     alert("no"); 
} 

if ($(elem).data('fooable')) { 
     alert("yes"); 
} 
else { 
     alert("no"); 
} 

Zobacz tutaj: http://bootply.com/60153

+3

po prostu upewnij się, że nie piszesz instrukcji if/else bez nawiasów klamrowych! – Mathletics

+0

Więc jQuery rejestruje wszystkie swoje '~ bles' w '.data'? –

+0

Tak, jQuery używa danych() do wielu wewnętrznych rzeczy - http://ejohn.org/apps/workshop/adv-talk/ - Sprawdzanie klas CSS jest również wykonalne, nie jestem pewien, który byłby lepszy w Twój przypadek lub z punktu widzenia wydajności. – ZimSystem

5

Dla elementów Draggable:

$(elem).is('.ui-draggable') 

czy mógłbyś filter, lub po prostu wybrać $('.ui-draggable');.

Dla droppable, należałoby użyć .ui-droppable, skalowalny jest .ui-resizable, wybierana jest .ui-selectable do pojemnika chociaż wybranych elementów są .ui-selectee, sortable jest .ui-sortable do pojemnika.

+0

Co jest lepsze? Sprawdzanie lub sprawdzanie klasy Css w "danych"? I dlaczego? –

+0

To naprawdę zależy od twojej implementacji. Usunięcie zajęć jest bardzo łatwe, a usunięcie niektórych danych jest łatwe. Mam wrażenie, że to pytanie jest symptomem niewłaściwego podejścia. – zzzzBov

14

To działa na mnie z JQuery 1.10.2

if ($("el").data('uiDraggable')){ //or uiDroppable 
    alert("draggable") 
} else { 
    alert("not draggable") 
} 

alternatywnie można wywołać metodę .data() bez argumentu:

$("el").data() 

To powinno wydrukować coś podobnego

object {uiDraggable.. $ (Function anonimowy) (funkcja anonimowa)}

gdzie można zobaczyć właściwości obiektu.

0

używam modernizr:

if (Modernizr.draganddrop) { 
// use drag and drop 
}