2009-10-22 14 views
5

Mam trochę kodu javascript na mojej stronie internetowej, który ładuje niektóre elementy div na stronę. Chcę również dodać onmouseenter i funkcje obsługi zdarzeń onmouseleave do każdego elementu div. Używam jQuery dodać te ładowarki, ale pojawia się błąd:jQuery, Uncaught TypeError

"Property '$' of object [object DOMWindow] is not a function"

Mój kod wygląda tak, to w pętli for:

var newItem = document.createElement('div'); 
newItem.innerHTML = results[i]; 
newItem.setAttribute("id", "resultDiv_" + i.toString()); 
dropDown.appendChild(newItem); 

//Error on next line... 
$("resultDiv_" + i.toString()).bind("mouseenter", function() { 
    $("resultDiv_" + i.toString()).css({ 'background-color': 'blue' }); 
}); 

Czy ktoś ma jakieś pomysły, dlaczego jestem dostaniesz ten błąd, a nawet, co oznacza błąd?

+0

Po prostu ciekawy, gdzie umieścić ten blok kodu, który używa $ (jquery)? – jerjer

+0

jest to funkcja wywoływana przez wynik zwracania przez webMethod [] ..., który jest inicjowany w wyniku zdarzenia kluczowania w polu tekstowym ...: D – Pavol

+0

używasz innych innych javascriptów (prawdopodobnie framework) , możesz równie dobrze spróbować użyć jquery.noconflict – jerjer

Odpowiedz

4

Czy jesteś pewien, że jQuery jest poprawnie załadowany? Czy może to być konflikt z inną biblioteką JavaScript?

+1

Dzięki za pomoc, okazało się, że nie ładowałem poprawnie jQuery :( – Pavol

+2

Mówiąc o konfliktach z innymi bibliotekami javascript ... niektóre dodatki w Chrome ładują dodatkowe javascript ... jeśli używasz Chrome, możesz wyłączyć swoje dodatki i spróbuj ponownie. – redconservatory

+0

dodatek do toczenia pracował dla mnie, dziękuję – merveotesi

0

Co z próbowaniem tego?

 var newItem = document.createElement('div'); 
     newItem.innerHTML = results[i]; 
     newItem.setAttribute("id", "resultDiv_" + i.toString()); 
     dropDown.appendChild(newItem); 

     //Error on next line... 
     $("resultDiv_" + i.toString()).mouseenter(function() { 
      $("resultDiv_" + i.toString()).css({ 'background-color': 'blue' }); 
     }); 

lub upewnij się, że nie jest null$("resultDiv_" + i.toString()). Użyj Firebug, aby sprawdzić element.

9

Spróbuj zastąpić wszystkie wystąpienia $ przez jQuery.

Również selektor $("resultDiv_" + i.toString()) prawdopodobnie nie zwróci żadnych elementów. Prawdopodobnie oznaczało: $("#resultDiv_" + i.toString())

I wreszcie upewnić się, że kod jest wykonywany, gdy DOM jest gotowy czyli wewnątrz:

jQuery(function() { 
    // Put your code here 
}); 
+0

dzięki za sugestię, zastąpiłem $ jQuery, ale nadal dostaję błąd, z "jQuery" zamiast "$" teraz. również dodano # – Pavol

+0

Naprawiono problem dla mnie. Nie mam żadnych innych bibliotek załadowanych ... Dlaczego otrzymuję ten błąd? – trusktr

+0

Dzięki temu rozwiązałem mój problem, niech cię Bóg błogosławi. –

0

Równie dobrze można spróbować to:

var newItem = jQuery('<div id="' + "resultDiv_" + i.toString() + '">+ results[i] + '</div'); 
    jQuery(dropDown).append(newItem); 
    //Error on next line... 
    newItem.mouseenter(function(){ 
     jQuery(this).css('background-color', 'blue'); 
    }); 

czy może jQuery. noConflict rozwiąże to.

1
(function ($) { 
    // All your code here 
})(jQuery); 

Naprawiono problem dla mnie.

Powiązane problemy