2015-07-11 13 views
6

Przeprowadzam migrację z PrototypeJS do jQuery i mam problemy z zastosowaniem funkcjonalności do nowych elementów DOM dodanych do prostego skryptu banera.jQuery show() nie jest funkcją - używane w dodawaniu elementów DOM

Zasadniczo, po załadowaniu strony, nowe elementy DIV są umieszczane w DOM przy użyciu append(), jak rozumiem, tak to jest zrobione w jQuery, w przeciwieństwie do obiektu Element Prototype.

Po sprawdzeniu Firebuga elementy zostały pomyślnie dodane do DOM i natychmiast ukryte. Wtedy pierwszy (0) element powinien pokazać ... jednak Firebug dać mi ten błąd:

TypeError: $(...).get(...).show is not a function 
http://www.ten103.com/javascript/global_desktop.js 
Line 15 

Jestem pewien, że to coś prostego, jak używam prototyp lat, ale trzeba przenieść do jQuery, ponieważ ... no cóż, ludzie go używają, więc zasoby są nieskończenie lepsze.

Czy jest jakaś zasadnicza różnica między tymi dwoma, których tu brakuje?

+0

zamiast '$ ('banner_slot '). Get (0) .pokaż()', spróbuj użyć '$ ('. Banner_slot') [0 ] .show() ' –

+6

Użyj odpowiedniej metody, po prostu zamień' get' na 'eq' – adeneo

+2

... lub' .first() '. – JJJ

Odpowiedz

8
$('.banner_slot').get(0).show(); 

zmiana do

$('.banner_slot').eq(0).show(); 

.get() powraca elementu DOM podczas .eq() zwraca obiekt jQuery i jQuery .show() jest API.

Aby uzyskać więcej informacji o .get() i .eq() kasie jQuery API docs

+2

Zobacz: https://stackoverflow.com/questions/4709660/jquery-eq-vs-get – heartyporridge

+0

Dziękujemy! Musi istnieć bardziej oczywiste wytłumaczenie tego. Żałuję, że jQuery nie może po prostu pracować z elementami DOM, zamiast powodować te mylące błędy. – Trev14

2

Musisz zaktualizować

$('.banner_slot').get(0).show(); 

do

$($('.banner_slot').get(0)).show(); 

Uwaga: get() daje DOM element i show() ma zastosowanie na obiekcie jQuery, a więc trzeba przekształcić go w jQuery obiekt do korzystania z funkcji.

+0

Czy ktoś może wyjaśnić przyczynę odrzucenia głosowania? – nikhil

+4

Założę się, że to dlatego, że masz obiekt jQuery, którego używasz do uzyskania DOMElement, a następnie ponownie z powrotem do obiektu jQuery, gdy zamiast tego możesz po prostu użyć 'eq()'. –

+0

@RoryMcCrossan - Zgadzam się. Chciałem podkreślić problem, a następnie dodać notatki. – nikhil