2012-02-24 108 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

相關問題