2013-04-03 4 views
6

Я использую плагин jQuery для пользовательского интерфейса: http://jqueryui.com/position/ для размещения моих значков на веб-странице. Селекторы захватываются из базы данных и выводятся в JS с использованием PHP в переменной $ myselector. Это мой текущий код:jQuery: Uncaught TypeError: Невозможно прочитать свойство «nodeType» undefined

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

Покажите нам, что выводит ' ' –

ответ

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

Ваш ответ очень помог решить мою проблему. В моем случае мой 'из' не был установлен в' 'window" ', а в' id' несуществующего элемента. – Pere

+0

Но если вы следуете ссылке на документацию, на которую указывает - и следуйте ссылке с более подробной информацией, она говорит, что аргумент arg может быть селектором (то есть строкой) или объектом. Я могу оценить в случае с «окном», это может быть проблемой, но я просто указываю, что быть строкой не может быть корневым, потому что это может быть селекторная строка - http://api.jqueryui.com/position/ – PandaWood

0

Пожалуйста, проверьте свой код, если какие-либо теги не закрыты или нет. Я попробовал то же самое, и он работал правильно. Видимо, у меня был дополнительный тег

+0

вы можете показать нам код ur. –

1

Проблема связана с тем, что of:$() не работает, если объект/селектор недействителен.

0

Обычно эта ошибка возникает, когда вы не применяете Свойства методов, таких как prop() Например: $(#"id").prop() .если вы не указали его свойства, кроме этой ошибки.

+0

вы правы, но какие реквизиты ожидают ??? – msqar

Смежные вопросы