2012-09-10 2 views
1

У меня возникают проблемы с использованием JQuery, чтобы выбрать правильный элемент. Использование JavaScript DOM работает нормально, но с JQuery я не могу показаться, чтобы получить правильный элемент ...Селектор JQuery не работает во время работы JavaScript в DOS

Это работает отлично (длина «средний» равен 1, «маленький» длина 0):

var medium = document.getElementById("Ribbon.Documents.WorkflowButtons.Workflow" + button + "-Medium"); 
var small = document.getElementById("Ribbon.Documents.WorkflowButtons.Workflow" + button + "-Small"); 

alert("Medium: " + jQuery(medium).length + " - Small: " + jQuery(small).length + " - State: " + workflowButtonState); 

в то время как это не работает (обе длины равны 0, которое не является правильным):

var medium = jQuery("#Ribbon.Documents.WorkflowButtons.Workflow" + button + "-Medium"); 
var small = jQuery("#Ribbon.Documents.WorkflowButtons.Workflow" + button + "-Small"); 

alert("Medium: " + jQuery(medium).length + " - Small: " + jQuery(small).length + " - State: " + workflowButtonState); 

Еще не работает пример, когда с помощью .html()

Рабочая (возвращает HTML):

var button = document.getElementById("Ribbon.Documents.WorkflowButtons.Workflow" + buttonId + "-" + state); 
$(button).css("display", "none"); 
alert($(button).html()); 

Не работает (.html() возвращают NULL)

var button = $("#Ribbon.Documents.WorkflowButtons.Workflow" + buttonId + "-" + state); 
$(button).css("display", "none"); 
alert($(button).html()); 

Любая идея, почему это происходит? Я выполняю это на той же странице. Итак, те же элементы HTML и т. Д. Результаты должны быть одинаковыми, нет?

Я проверил "document.readyState" равен "полной"

PS: Я использовал два синтаксиса: JQuery и $. Это было сделано для того, чтобы не было других проблем.

Спасибо!

+3

Я думаю, что ошибка происходит из-за многоточия во имя вашего идентификатора. Попробуйте следующее: http://stackoverflow.com/questions/605630/how-to-select-html-nodes-by-id-with-jquery-when-the-id-contains-a-dot –

+0

U сделал мой день. Создайте ответ, я его одобрю! :-) –

+0

Я думаю, что опаздываю. Вы уже одобрили ответ. –

ответ

1

Периоды имеют особое значение в jQuery. Поэтому вам нужно сбежать от них с косой чертой. К сожалению, слэш также экранирующий символ для строк Javascript, поэтому вы должны использовать двойные слеши:

jQuery("#Ribbon\\.Documents\\.WorkflowButtons\\.Workflow" + button + "-Medium"); 
Смежные вопросы