2012-02-24 6 views
2

HTML файл:Невозможно получить элемент с помощью JQuery

<div id ="main"> 
    </div> 

Javascript:

//create a div 
var divElem = $('<div class="divText"></div>'); 

//create input element inside it 
var inhtml = "<input type='text' id='12345' />"; 

//add to page 
$(divElem).html(inhtml).appendTo('#main') 

После не работает, как он не может найти элемент ввода:

//retrieve input element 
$('#12345').val('hello') 

Следующие работы:

document.getElementById('12345').value = 'hello' 

следующие работы:

var ipElem = $(inhtml); 
$(divElem).append(ipElem).appendTo('#main') 
$(ipElem).val('hello') 

Может кто-нибудь сказать, почему первый вариант извлечения элемента не работает в JQuery? (Только начиная с JQuery ... :))

Edit: Я думаю, что '12345' работает, но не какой-то странный идентификатор, как: mytext0.15942923246580176 Смотрите здесь: http://jsfiddle.net/9PVNb/4/

+1

работает для меня: http://jsfiddle.net/9PVNb/ – Yoshi

+0

Я пробую ваш код (просто добавьте «;» после var inhtml = " ";) и он работает .... – silly

+0

*" // получить элемент ввода: $ ('# 12345'). val ('hello') "* - он не извлекается. это настройка! – Joseph

ответ

5

Вы оберточной divElem в JQuery объект дважды:

var divElem = $('<div class="divText"></div>'); 
var inhtml = "<input type='text' id='12345' />"; 

$(divElem).html(inhtml).appendTo('#main') // Nop '$(divElem)' plus missing `;` 
divElem.append(inhtml).appendTo('#main'); // Yup 

EDIT:

Изменить: Я думаю, что «12345» работает, но не какой-то странный идентификатор, как: mytext0.15942923246580176

Ваш код на http://jsfiddle.net/9PVNb/4/ не работает, потому что:

// Your `id` has a `.` which you didn't escape 
var elemid = 'mytext0.15942923246580176'; 

Вы можете заставить его работать на как это сделать:

alert($('#' + elemid).val()); //undefined. DOES NOT WORK 
alert($('#' + elemid.replace('.', '\\.')).val()); // hello world IT WORKS! 
+2

Хотя это не самая лучшая практика, неважно, если вы завернете объект jquery в другой объект jquery. jQuery позаботится об этом. (Even: '$ ($ ($ ($ ($ (divElem))))). Html (inhtml) .appendTo ('# main');' будет работать) – Yoshi

+0

@Yoshi Я обновил это. http://jsfiddle.net/9PVNb/4/ Некоторая проблема с значением id Предполагаю, –

+0

Решение обновлено. См. Править. – elclanrs

1

работы здесь: http://jsfiddle.net/xvKcd/

Основная проверка:

  • Вы используете $ (document) .ready()? ваш код может загореться, прежде чем загрузится нужный элемент.
  • Вы загружали jQuery раньше всего?
  • опечатки?
+0

Спасибо. Я использовал '.' в id и мне нужно было избежать этой точки. –

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