无法通过jquery检索元素

viv*_*k.m 2 javascript jquery

html文件:

  <div id ="main">
  </div>
Run Code Online (Sandbox Code Playgroud)

使用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')
Run Code Online (Sandbox Code Playgroud)

以下不起作用,因为它无法找到输入元素:

//retrieve input element
$('#12345').val('hello')
Run Code Online (Sandbox Code Playgroud)

以下作品:

document.getElementById('12345').value = 'hello'
Run Code Online (Sandbox Code Playgroud)

以下作品:

var ipElem = $(inhtml);
$(divElem).append(ipElem).appendTo('#main')
$(ipElem).val('hello')
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉为什么第一版的检索元素在jquery中不起作用?(刚从jquery开始...... :))

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

elc*_*nrs 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
Run Code Online (Sandbox Code Playgroud)

编辑:

编辑:我认为'12345'有效但不是一些奇怪的ID:mytext0.15942923246580176

您在http://jsfiddle.net/9PVNb/4/的代码无效,因为:

// Your `id` has a `.` which you didn't escape
var elemid = 'mytext0.15942923246580176';
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

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

  • 虽然不是最佳实践,但如果将jquery对象包装在另一个jquery对象中则无关紧要.jquery将负责这一点.(甚至:`$($($($($(divElem))))).html(inhtml).appendTo('#main');`可以工作) (2认同)