2017-05-03 45 views
-1

我想修改我的代碼,jQuery的jQuery的

這是我現有的線,我試圖與HTML一起改變:

var detailDiv = document.getElementById("description");
<div id="detailsPane"> 
 
    <img src="images/blank-detail.jpg" width="346" height="153" id="itemDetail" /> 
 
    <div id="description"></div> 
 
</div>

我正在嘗試這個,它不會工作:

var detailDiv = $("#detailsPane #description"); 
+0

你想要做什麼?你只是選擇它 – empiric

+0

它怎麼樣「不起作用」?你不需要'#detailsPane',但它不應該有任何傷害。 – j08691

+0

change #description to class ...你不能兩次使用#,因爲它的ID和這應該在一個頁面上是唯一的。 – daremachine

回答

1

所不同的是在jQuery的版本,您已經有了一個jQuery對象,並在其他DOM元素。看起來你仍然把detailDiv當作一個DOM元素。

您可以在jQuery的版本訪問DOM元素,會給你一個相同的結果,在這兩種情況下:

var detailDiv = $("#description")[0]; 
//        ^^^ this gets the DOM element 

旁註:

由於ID應該是唯一的, #detailsPane沒有必要,但也不是問題。

0

那麼,document.getElementById("description");直接轉化爲$("#description");

記住,所以不需要#detailsPaneid必須是唯一的。

但是你的代碼並沒有真正做到,只是創建了對該元素的引用。


現在,如果你有下面的代碼與detailDiv涉及那就不是工作作爲變量現在將舉行一個jQuery對象,而不是直接的DOM元素的引用。如果你想有一個直接的DOM引用然後使用

var detailDiv = $("#description").get(0); // or $("#description")[0] 
+0

請評論,爲什麼downvote。 – Beri

0

首先嵌套ID仍與jQuery的工作(儘管它是沒有必要的,你可以直接只使用$( '#說明'),它會做同樣的事情)

檢查code pen example jQuery method chaining

//Existing expectation is html element 
var detailDiv = document.getElementById("description"); 

// to get html element you have to use .get(). 
// By default jQuery returns wrapped element for chaining 
console.log($('#detailsPane #description').get(0)); 
// same as above 
console.log($('#description').get(0)); 

console.log(detailDiv);