Witaj.
Trochę przetestowałem Twój skrypt i znalazłem błąd w drugiej linii JavaScriptu.
Kod
$(slot).find('id', 'class');
Szczerze to nie wiem czemu są dwa parametry, w każdym razie szukasz w tej linijce odpowiednio elementów <id> oraz <class>, a jak wiadomo takie elementy nie istnieją i nie będą istnieć.
Zamiast powyższego - ustaw jeden parametr tak jak tutaj:
Kod
$(slot).find('div');
Wtedy sprawdzamy czy nasz slot zawiera jakiś przedmiot.
Z grubsza to by rozwiązywało Twój problem wymieniony w poście, lecz ja zauważyłem kolejny błąd.
Mianowicie po wykonaniu akcji jakie opisałeś w poście - czasami udaje się >>podmienić<< przedmioty.
Mam na myśli sytuację, gdy slot broni zawiera broń1 i przeciągniemy na niego broń2 to one zamieniają się miejscami.
Dzieje się tak czasami, lecz nie zawsze.
Nie wiedziałem na jakim efekcie Ci zależy więc zrobiłem w dwóch wariantach:
Wariant Pierwszy - brak podmiany:- link:
http://jsfiddle.net/SWu3B/12/- zmiana: dodane linie 21 oraz 22
Wariant Drugi - włączona podmiana:- link:
http://jsfiddle.net/SWu3B/14/- zmiana: dodane komentarze w liniach
- od 28 do 31
- od 34 do 37
Jeśli, tak jak piszesz, uczysz się tego wszystkiego - postaraj się zrozumieć dlaczego wprowadziłem takie, a nie inne zmiany.
Niestety nie jest to realnie możliwe do wytłumaczenia w tym poście, ale w razie chęci kontaktu - zapraszam na priv.
Dodatkowo podpowiem, abyś do testowania swoich skryptów wykorzystywał:
- podgląd na żywo zmieniających się elementów oraz atrybutów html,
- konsoli JavaScriptu, gdzie możesz sprawdzać wartości zmiennych w trakcie działania skryptu,
- polecenia console.log(text), dzięki któremu możesz wypisywać zmienne do konsoli w celu sprawdzenia wartości.
To wszystko osiągniesz przy wykorzystaniu Chrome Tools lub Firebug w Firefoxie. Ja polecam opcję pierwszą.
Pozdrawiam