2013-04-03 25 views
6

Używam wtyczki jQuery UI Position: http://jqueryui.com/position/ do ustawiania ikon na stronie internetowej. Selektory są pobierane z bazy danych i wysyłane do JS przy użyciu PHP w zmiennej $ myselector. To jest mój bieżący kod:jQuery: Uncaught TypeError: Nie można odczytać właściwości "nodeType" o niezdefiniowanym

var element_selector='<?php echo $myselector;?>'; 

$('#inline_docxdiv .Featured.Slider').position({ 
my: "center", 
at: "right top", 
of: $(element_selector) 

}); 

//append icons,applicable to all 

$(divname<?php echo $uniqueid;?>).append('<div id="inline_docxdiv" class="<?php echo $uniqueid;?>"><div id="helpericons_display"><a class="<?php echo $title_toolsetdisplayed;?>" id="questionmarkicon_inlinedoc" title="Display Explanation"><img src="<?php echo $helper_iconpng;?>"></a><a target="_blank" href="<?php echo admin_url().'post.php?post='.$id_toolsetdisplayed.'&action=edit';?>" class="<?php echo $title_toolsetdisplayed;?>" id="sourceicon_inlinedoc" title="View source"><img src="<?php echo $helpersource_iconpng;?>"></a></div></div>'); 

Jednak ikony nie są dołączane prawidłowo i zwraca błąd w konsoli:

Uncaught TypeError: Cannot read property 'nodeType' of undefined

Najdziwniejsze jest to, że jeśli będę ciężko kod selektor w Kod JS (nie wyprowadzany przez PHP), wszystko działa poprawnie i żaden błąd nie jest zwracany w konsoli. Jest to kod, gdzie zakodowane selektor elementu:

var element_selector='.idoc-featured-slider'; 

Czy istnieje sposób, aby korzystać z PHP na wyjście selektora i nie napotyka na błąd? Dzięki za pomoc.

+0

Pokaż nam, co jest wynikiem działania ' ' –

Odpowiedz

13

Wpadłem na podobny problem. Ja otrzymuję następujący błąd:

Uncaught TypeError: Cannot read property 'nodeType' of undefined

Tymi dialogowych wartości konfiguracyjnych pozycji:

position: {my: "center", at: "left top", of: "window"} 

Per jQuery UI documentation, wartość materiałów „z” własność jest przedmiotem, a nie ciąg. Kiedy zmieniłem wartości pozycji na:

position: {my: "center", at: "left top", of: window} 

błąd zniknął.

+0

Twoja odpowiedź była bardzo pomocna w rozwiązaniu mojego problemu. W moim przypadku moje 'of' nie było ustawione na' "okno" 'ale na' id' nieistniejącego elementu. – Pere

+0

Ale jeśli podążysz za wskazanym odnośnikiem do dokumentacji - i podążysz za łączem z większą ilością szczegółów, to argument arg może być selektorem (tj. Łańcuchem znaków) lub obiektem. Mogę docenić w przypadku "okna" może to stanowić problem, ale zwracam uwagę, że bycie ciągiem nie może być głównym przypadkiem, ponieważ może to być ciąg selektora - http://api.jqueryui.com/position/ – PandaWood

0

Proszę wpisać swój kod, jeśli jakieś znaczniki nie są zamknięte. Próbowałem tego samego i działało poprawnie. Najwyraźniej miałem dodatkowy znacznik

+0

możesz pokazać nam kod PIN. –

1

Problem jest spowodowany tym, że of:$() nie działa, jeśli obiekt/selektor nie jest prawidłowy.

0

Zazwyczaj ten rodzaj błędu występuje, gdy nie zastosujesz Właściwości metod takich jak prop(). E.g: $(#"id").prop(). Jeśli nie określisz jego właściwości, to również wystąpi ten błąd.

+0

masz rację, ale jakie rekwizyty się spodziewają ??? – msqar

Powiązane problemy