2012-02-24 110 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的... :))

编辑: 我觉得 '12345' 工程,但没有一些奇怪的ID,如:mytext0.15942923246580176 在这里看到: http://jsfiddle.net/9PVNb/4/

+1

适合我:http://jsfiddle.net/9PVNb/ – Yoshi 2012-02-24 08:11:01

+0

我尝试你的代码(只需在var后添加“;”inhtml =“ “;),它的工作原理....” – silly 2012-02-24 08:12:03

+0

*“//检索输入元素:$('#12345')。val('hello')”* - 不检索。它的设置! – Joseph 2012-02-24 08:31:37

回答

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! 
+2

虽然不是最佳实践,但如果将jquery对象包装到另一个jquery对象中则无关紧要。 jquery会照顾到这一点。 (Even:'$($($($($($($))))。html(inhtml).appendTo('#main');'会工作) – Yoshi 2012-02-24 08:15:38

+0

@Yoshi我已经更新了这个。 http://jsfiddle.net/9PVNb/4/一些问题与我的ID值我想 – 2012-02-24 09:15:06

+0

解决方案更新。请参阅编辑。 – elclanrs 2012-02-24 09:21:48

1

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

basic check:

  • 你使用$(document).ready()吗?你的代码可能会在你需要的元素被加载之前触发。
  • 你是否在其他任何东西之前加载jQuery?
  • 错别字?
+0

谢谢。我正在使用'。'在身份证,我需要逃避那个点。 – 2012-02-24 09:35:28

相关问题