Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery:选择具有类名和节点索引的元素_Javascript_Jquery_Jquery Selectors - Fatal编程技术网

Javascript jquery:选择具有类名和节点索引的元素

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) {

我在类“.myclass”中有很多元素。现在,我想通过节点索引选择其中一个元素,并为其设置动画。我得到一个错误,说元素没有动画功能

例如:

<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);
});