2013-04-03 262 views
6

我使用jQUery UI位置插件:http://jqueryui.com/position/將我的圖標放置在網頁上。選擇器從數據庫中抓取並使用$ myselector變量中的PHP輸出到JS。這是我當前的代碼:jQuery:未捕獲TypeError:無法讀取未定義的屬性'nodeType'

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

但是圖標沒有正確附加並在控制檯中返回一個錯誤:

Uncaught TypeError: Cannot read property 'nodeType' of undefined

奇怪的是,如果我硬編碼的選擇JS代碼(不是由PHP輸出),一切正常,控制檯中沒有錯誤返回。這是我硬編碼元素選擇器的代碼:

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

有沒有辦法使用PHP來輸出選擇器而不會遇到錯誤?謝謝你的幫助。

+0

向我們展示'<?php echo $ myselector; ?> –

回答

13

我遇到了類似的問題。我收到以下錯誤:

Uncaught TypeError: Cannot read property 'nodeType' of undefined

有了這些對話框位置配置值:

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

每jQuery的UI documentation,有「」的價值屬性是一個對象,而不是一個字符串。所以,當我將位置值更改爲以下值:

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

該錯誤消失。

+0

你的回答對解決我的問題很有幫助。在我的情況下,我的'''沒有設置爲''「窗口」,而是設置爲不存在的元素的「ID」。 – Pere

+0

但是,如果你按照指向的文檔鏈接 - 並按照鏈接更多的細節,它說arg可以是選擇器(即字符串)或對象。 我可以欣賞在'窗口'的情況下,這可能是一個問題,但我只是指出,作爲一個字符串不能是根情況,因爲它可能是一個選擇器字符串 - http://api.jqueryui.com/position/ – PandaWood

0

如果任何標籤未關閉,請檢查您的代碼。我嘗試了相同的,它正常工作。顯然,我有一個額外的標籤

+0

你可能應該向我們展示我們的代碼。 –

1

問題是由於of:$()不工作,如果對象/選擇器無效。

0

通常情況下,這種錯誤發生在你不應用方法的屬性時,如prop()例如:$(#"id").prop()。如果你沒有指定它的屬性,也會發生這個錯誤。

+0

你說得對,但道具期待什麼? – msqar

相關問題