在对象中的单个元素上使用 jQuery .append
Using jQuery .append on individual elements in an object
在这里尝试一些新的东西,但我很难理解为什么它没有按我的预期工作。
所以,为了简单起见,我用一个简单的 for 循环设置了一些元素:
for(var i=0; i<5; i++){
$('body').append('<div class="green">Here I am</div>');
}
并且我已将所有项目选为一个对象(我将需要单独更改每个项目),因此:
$greenDivs = $('div.green');
现在,当我想访问它时,我可以在控制台中使用它的索引进行访问:
console.log($greenDivs[3]);
returns 一个漂亮、整洁的控制台:<div class="green">
我也可以在页面上看到它被选中。
然而,当我尝试用某些 jQuery 函数以任何方式改变它时,我只收到一个错误,例如 $greenDivs[3].append is not a function
为什么这些功能不起作用?是因为 .green
元素被分类到一个对象中的方式吗?我可以使用所有基本的 JS 属性,例如:
$greenDivs[3].innerHTML = "Whatever"
如果您能帮助我理解为什么我必须使用基本 javascript 对象属性来修改单个元素,我们将不胜感激。
如果需要示例,请在此处播放:
https://jsfiddle.net/eacdtzjw/2/
$greenDivs[3]
给你一个 DOM 节点。这些没有任何 jQuery 特定方法。
要将其保留为 jQuery 对象,请使用 $greenDivs.eq(3)
(参见 https://api.jquery.com/eq/)。
您当然可以 re-wrap 将其作为 jQuery 对象,例如 $( $greenDivs[3] )
,但在这种情况下这是不必要的步骤。
您需要获取元素 $greenDivs[3]
:
$(function(){
for(var i=0; i<5; i++){
$('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>
$greenDivs[3] 实际上是一个对象而不是 jquery 对象。如果你想使用 jquery append 函数你应该
$($greeenDivs[3]).append('...');
或
$greenDivs.eq(3).append('....')
在这里尝试一些新的东西,但我很难理解为什么它没有按我的预期工作。
所以,为了简单起见,我用一个简单的 for 循环设置了一些元素:
for(var i=0; i<5; i++){
$('body').append('<div class="green">Here I am</div>');
}
并且我已将所有项目选为一个对象(我将需要单独更改每个项目),因此:
$greenDivs = $('div.green');
现在,当我想访问它时,我可以在控制台中使用它的索引进行访问:
console.log($greenDivs[3]);
returns 一个漂亮、整洁的控制台:<div class="green">
我也可以在页面上看到它被选中。
然而,当我尝试用某些 jQuery 函数以任何方式改变它时,我只收到一个错误,例如 $greenDivs[3].append is not a function
为什么这些功能不起作用?是因为 .green
元素被分类到一个对象中的方式吗?我可以使用所有基本的 JS 属性,例如:
$greenDivs[3].innerHTML = "Whatever"
如果您能帮助我理解为什么我必须使用基本 javascript 对象属性来修改单个元素,我们将不胜感激。
如果需要示例,请在此处播放: https://jsfiddle.net/eacdtzjw/2/
$greenDivs[3]
给你一个 DOM 节点。这些没有任何 jQuery 特定方法。
要将其保留为 jQuery 对象,请使用 $greenDivs.eq(3)
(参见 https://api.jquery.com/eq/)。
您当然可以 re-wrap 将其作为 jQuery 对象,例如 $( $greenDivs[3] )
,但在这种情况下这是不必要的步骤。
您需要获取元素 $greenDivs[3]
:
$(function(){
for(var i=0; i<5; i++){
$('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>
$greenDivs[3] 实际上是一个对象而不是 jquery 对象。如果你想使用 jquery append 函数你应该
$($greeenDivs[3]).append('...');
或
$greenDivs.eq(3).append('....')