无法通过jquery检索元素

时间:2012-02-24 08:08:00

标签: javascript jquery

html文件:

  <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开始...... :))

编辑: 我认为&#39; 12345&#39;有效,但不是一些奇怪的ID:mytext0.15942923246580176 看这里: http://jsfiddle.net/9PVNb/4/

2 个答案:

答案 0 :(得分: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

编辑:

  

编辑:我认为'12345'有效但不是一些奇怪的ID: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!

答案 1 :(得分:1)

在这里工作:http://jsfiddle.net/xvKcd/

基本检查:

  • 您使用的是$(文件).ready()吗?您的代码可能会在您需要的元素加载之前启动。
  • 你之前加载了jQuery吗?
  • 错字?