2011-12-22 7 views
3

Я пишу javascript для страницы, которая была построена с использованием WYSIWYG. Нет, я не могу сейчас входить и менять идентификаторы или действительно настраивать DOM.Зачем селектор jQuery возвращает null?

Это элемент DOM, который я пытаюсь выбрать (это было создано WYSIWYG).

<td nowrap="true" align="left" id="vW2070;" name="vW2070;" style="padding-left: 2pt; padding-right: 2pt; border-left: 1pt solid black; cursor: auto; background-color: rgb(164, 194, 64); color: rgb(0, 0, 0);" class=" nAll selected" selected="1" sn="itemList">TOP 5</td> 

В настоящее время в моем Javascript идентификатор я пытаюсь получить это #vW2070;. По какой-то причине document.getElementById("vW2070;") возвращает отлично, но $("#vW2070;") возвращает null. Почему это? Мне нужно использовать селектор jQuery.

Эта функция работает по адресу $(document).ready.

Я никогда не видел ничего подобного.

спасибо, все.

EDIT: Без полуколоны он не подбирает его. Полу-двоеточие буквально находится в атрибуте идентификатора элемента, благодаря WYSIWYG.

+1

Почему точки с запятой? Действительно ли они являются частью селектора? –

+0

jquery не игнорирует ';', поэтому '$ (" # vW2070; ")' должен быть '$ (" # vW2070 ")' –

+0

Действительно ли идентификатор имеет в нем двоеточие? – isNaN1247

ответ

7

Вы можете избежать точкой с запятой, как это:

$("#vW2070\\;") //Use one backslash to escape the semicolon for the Sizzle parser and the other to escape the first backslash for the javascript parser, so two in total 

или

$(document.getElementById("#vW2070;")).jquerystuff(...); 

JSFiddle: http://jsfiddle.net/HTyQC/

Кроме того, a relevant link о том, как универсальный атрибут идентификатор.

+0

+1 для чтения. –

+0

Хотя ваше решение * должно * работать, по какой-то причине, когда я убегаю, он все равно терпит неудачу. Теперь я понял, что document.getElementById ("vW2070;") также возвращает значение null. Понятия не имею почему. Это безумие ... Я собираюсь отметить этот ответ как правильный. Когда я выясню, что не так с моим кодом и моей сумасшедшей ситуацией, я отправлю решение здесь. –

+0

@JesseAtkinson Просто одна из многих опасностей использования WYSIWYG ... – Dennis

1

Попробуйте удалить; вы не должны нуждаться в его

$("#vW2070") 
+0

OP не может изменить идентификатор. – motoxer4533

1

Try удаления запятой $("#vW2070;") к $("#vW2070")

Вы не получаете сообщение об ошибке? В хроме вы должны получить Uncaught Error: Syntax error, unrecognized expression: ;

1

вы должны попытаться избежать ";" с помощью "\"

изменения $("#vW2070;") к $("#vW2070\\;")

скрипку: http://jsfiddle.net/28cZu/

3

Поскольку вы не можете изменить идентификатор, который имеет точку с запятой, попробуйте вывести его в селектор, например:

$("#vW2070\\;") 

Экранирование здесь не более чем добавление «\ \» перед точкой с запятой.

Вот еще некоторое представление: What are valid values for the id attribute in HTML?

1

Если элемент id действительно есть точка с запятой в нем, а затем technically its invalid.

Редактировать:HTML5 spec не содержит никаких символов, кроме пробелов.

Вы можете просто Espace с запятой с двойной обратной косой черты #vW2070\\;

В противном случае, просто перенесите запятой из кода селектора.

0

Это ошибка jquery или мы можем сказать ограничение в текущей версии jquery. Это не позволит ';' в ID.

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