2013-04-03 10 views
6

Uso il plugin di posizione dell'interfaccia utente jQuery: http://jqueryui.com/position/ per posizionare le mie icone su una pagina Web. I selettori vengono estratti dal database e inviati a JS utilizzando PHP in una variabile $ myselector. Questo è il mio codice corrente:jQuery: Uncaught TypeError: Impossibile leggere la proprietà 'nodeType' di indefinito

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>'); 

Tuttavia le icone non vengono aggiunti correttamente e restituisce un errore nella console:

Uncaught TypeError: Cannot read property 'nodeType' of undefined

La cosa strana è che se io hard-code il selettore nella Codice JS (non emesso da PHP), tutto funziona correttamente e nessun errore viene restituito nella console. Questo è il codice dove ho hard-coded il selettore elemento:

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

C'è un modo per utilizzare PHP per l'uscita del selettore e non incontrare l'errore? Grazie per qualsiasi aiuto.

+0

Mostraci qual è l'output di ' ' –

risposta

13

Mi sono imbattuto in un problema simile. Stavo ottenendo il seguente errore:

Uncaught TypeError: Cannot read property 'nodeType' of undefined

Con questi valori di configurazione posizione di dialogo:

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

Per il jQuery UI documentation, il valore del "di" proprietà è un oggetto anziché una stringa. Così, quando ho cambiato i valori di posizione al seguente:

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

l'errore è scomparso.

+0

La tua risposta è stata di grande aiuto per risolvere il mio problema. Nel mio caso, il mio 'of' non era impostato su' "window" 'ma su un' id' di un elemento inesistente. – Pere

+0

Ma se segui il link alla documentazione puntato a - e segui il link con maggiori dettagli, dice che di arg può essere un selettore (cioè una stringa) o un oggetto. Posso apprezzare nel caso di 'window' questo potrebbe essere un problema, ma ho solo sottolineato che essere una stringa non può essere il root case perché potrebbe essere una stringa di selezione - http://api.jqueryui.com/position/ – PandaWood

0

Si prega di controllare il codice se qualche tag non è chiuso o meno. Ho provato lo stesso e ha funzionato correttamente. Apparentemente, avevo un tag extra

+0

potresti mostrarci il tuo codice. –

1

Il problema è dovuto al fatto che il of:$() non funziona se l'oggetto/selettore non è valido.

0

Normalmente questo tipo di errore si verifica mentre non si applicano le proprietà di metodi come prop() E.g: $(#"id").prop() .se non si specificano le proprietà di questo errore.

+0

hai ragione, ma quali puntelli si aspettano ??? – msqar

Problemi correlati