Javascript jquery:选择具有类名和节点索引的元素
我在类“.myclass”中有很多元素。现在,我想通过节点索引选择其中一个元素,并为其设置动画。我得到一个错误,说元素没有动画功能 例如:Javascript jquery:选择具有类名和节点索引的元素,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,我在类“.myclass”中有很多元素。现在,我想通过节点索引选择其中一个元素,并为其设置动画。我得到一个错误,说元素没有动画功能 例如: <div class="myclass"></div> <div class="myclass"></div> <div class="myclass"></div> var indizes = [0, 3]; $.each(indizes, function(i, v) {
<div class="myclass"></div>
<div class="myclass"></div>
<div class="myclass"></div>
var indizes = [0, 3];
$.each(indizes, function(i, v) {
$('.myclass')[v].animate({
left: 100
}, 1000);
});
而不是
$('.myclass')[v]
这是实际问题吗?对我来说,嵌套选择器似乎很奇怪
这是实际问题吗
对。如果通过括号表示法访问所选元素,则返回原始DOM元素。DOM元素没有animate
方法。通过再次将DOM元素传递给jQuery($($('.myclass')[v])
),您正在(再次)创建一个jQuery对象
可以避免这种情况,并使用为该索引处的元素获取jQuery对象:
$('.myclass').eq(v);
不过,最好在循环之外保留对选定元素的引用:
var indizes = [0, 3];
var $elements = $('.myclass');
$.each(indizes, function(i, v) {
$elements.eq(v).animate({
left: 100
}, 1000);
});
或者,您可以使用过滤掉要设置动画的元素,这至少看起来更简洁一些:
$('.myclass').filter(function(i) {
return $.inArray(i, indizes) > -1;
}).animate({
left: 100
}, 1000);
当您使用$('.myclass')[v]
时,您将在索引v
您可以使用下面的代码,而不是尝试使用数组表示法
$('.myclass:eq('+v+')');
您做的每件事都是正确的,是的,您必须像这样重新包装元素
var indizes = [0, 3],
elements = $('.myclass');
$.each(indizes, function(i, v) {
$(elements[v]).animate({
left: 100
}, 1000);
});
执行$('.myclass')[0]
时,该元素不再附加任何jQuery方法$()
返回jQuery对象<代码>[0]获取DOM节点。DOM节点没有jQuery方法。使用.eq()
为索引处的节点获取jQuery对象。:nth-child()选择器可能会有所帮助,但考虑到您的动态索引值,不确定它是否是最佳选择。
var indizes = [0, 3],
elements = $('.myclass');
$.each(indizes, function(i, v) {
$(elements[v]).animate({
left: 100
}, 1000);
});