2016-01-20 48 views
0

在這裏嘗試一些新東西,我在理解爲什麼這不按照我的意圖工作時遇到了一些麻煩。在對象中的單個元素上使用jQuery .append

所以,我給自己定了一個簡單的for循環的幾個元素簡單起見:

for(var i=0; i<5; i++){ 
    $('body').append('<div class="green">Here I am</div>'); 
} 

我都選擇爲對象的項目(我將需要改變每個個別項目)本身:

console.log($greenDivs[3]); 

$greenDivs = $('div.green'); 

現在,當我想訪問它,我可以通過它的索引這樣做只是在控制檯罰款

它返回一個漂亮整潔的控制檯:<div class="green">,我也可以在頁面上看到它。

然而,當我試圖改變它在與一些jQuery函數什麼辦法,我只收到爲$greenDivs[3].append is not a function

爲什麼不中功能的這樣的錯誤?是否因爲.green元素被分類爲一個對象?我可以使用所有的基本JS性能,如:

$greenDivs[3].innerHTML = "Whatever"

任何幫助表示讚賞理解爲什麼我必須使用基本的JavaScript對象屬性修改單個元素。這裏

播放,如果你想要一個例子: https://jsfiddle.net/eacdtzjw/2/

+2

$($ greenDivs [3])附加( '你好');作品 – Ianis

回答

3

$greenDivs[3]給你一個DOM節點。那些沒有任何jQuery特定的方法。

要保留它作爲jQuery對象,請使用$greenDivs.eq(3)(請參閱https://api.jquery.com/eq/)。

你當然可以重新包裝它作爲一個jQuery對象,如$($greenDivs[3]),但在這種情況下這是一個不必要的步驟。

2

您需要獲得元素$greenDivs[3]

$(function(){ 
 
\t for(var i=0; i<5; i++){ 
 
    \t $('body').append('<div class="green">Here I am</div>'); 
 
    } 
 
    $greenDivs = $('div.green'); 
 
    console.log($greenDivs[3]); 
 

 
    $($greenDivs[3]).append('Hello'); 
 

 
});
.green { 
 
    background: #00FF00; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

2

$ greenDivs [3]實際上是一個對象不是一個jQuery對象。如果你想使用jQuery的附加功能,你應該

$($greeenDivs[3]).append('...'); 

$greenDivs.eq(3).append('....')