2013-06-04 58 views
0

什麼是JavaScript替代此:JavaScript的替代jQuery的元素尋址

$('#clientDetailModal #heightValue') 

我需要它,因爲在我的代碼工作的:

document.getElementById('heightValue').checkValidity() 

但這並不:

$('#clientDetailModal #heightValue').checkValidity() 

而我需要在clientDetailModal div中只選擇heightValue。

+0

你不應該在同一個文檔中使用重複的ID。使用一個類並嘗試一個類選擇器。據說,你應該告訴我們checkValidity函數是什麼。好像它暴露在DOM元素而不是jQuery對象上。 –

+0

ID標識符必須是唯一的(每個頁面只有一個),所以如果你這樣做:'jquery中的'$('#clientDetailModal #heightValue')'這樣做:'$('#heightValue')'但比較慢。 – tborychowski

+0

@tborychowski我不知道是否OP編輯(最初沒有看到它),但問題狀態*「我需要在clientDetailModal div中只選擇heightValue」*。 –

回答

5

嘗試$('#clientDetailModal #heightValue')[0].checkValidity()

你需要做的[0]的原因是,(按照jQuery的ID選擇文檔)

與id選擇作爲調用的jQuery()(或$())它的參數將 返回包含收集零個或一個 DOM元素的 jQuery對象

由於您將獲得帶有1個DOM元素的集合(假設您沒有多個ID),則需要使用[0]明確「選擇」該元素。

-1

我想這就是你要找的內容:

document.getElementById('clientDetailModal').getElementById('heightValue').checkValidity(); 
2

你可以使用get得到的DOM元素:

$('#clientDetailModal #heightValue').get(0).checkValidity() 

只是可以肯定,你的問題可能是一個有點含糊不清:只有一個元素可以在HTML中擁有給定的ID。所以,如果你的元素是不存在或內#clientDetailModal,那麼你可以如用

$('#heightValue').get(0).checkValidity() 

這也將更快。但是在那種情況下,使用document.getElementById沒有任何問題。

1

由於document.getElementById('heightValue').checkValidity()起作用,這意味着您的函數checkValidity()附加在本機DOM元素上。這意味着,你可以這樣做:

$('#clientDetailModal #heightValue')[0].checkValidity() 

:如果你的HTML是沒有重複的ID有效,你可以簡單地做

$('#heightValue')[0].checkValidity() 
0

由於OP問一個JavaScript替代。在現代瀏覽器上,

document.querySelector ('#clientDetailModal #heightValue') 

將返回您要求的元素。

直接當量將是

document.querySelectorAll ('#clientDetailModal #heightValue') 

返回匹配該選擇請求的元件的陣列,就yrou將需要添加的[0]按照其他的答案。