标签:jquery-selectors javascript jquery
我有一类“ .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])
代替
$('.myclass')[v]
这是实际问题吗?嵌套选择器对我来说似乎很奇怪.
解决方法:
Is this the actual problem?
是.如果通过括号表示法访问选定的元素,则会返回原始DOM元素. DOM元素没有动画方法.通过将DOM元素再次传递给jQuery($($(‘.myclass’)[v])),您正在创建jQuery对象(再次).
您可以避免这种情况,并使用.eq
为该索引处的元素获取jQuery对象:
$('.myclass').eq(v);
最好在循环外保留对选定元素的引用:
var indizes = [0, 3];
var $elements = $('.myclass');
$.each(indizes, function(i, v) {
$elements.eq(v).animate({
left: 100
}, 1000);
});
或者,您可以使用.filter
过滤出要设置动画的元素,这至少看起来更简洁一些:
$('.myclass').filter(function(i) {
return $.inArray(i, indizes) > -1;
}).animate({
left: 100
}, 1000);
标签:jquery-selectors,javascript,jquery 来源: https://codeday.me/bug/20191030/1968977.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。