2013-04-03 381 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

相关问题