jQuery:为什么index()在动态改变DOM后返回-1
jQuery: why does index() return -1 after dynamically changing DOM?
我有一个简单的列表:
<ul>
<li>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</li>
<li>Aliquam tincidunt mauris eu risus.</li>
<li>Vestibulum auctor dapibus neque.</li>
</ul>
和一些jQuery添加一个类的元素,然后返回该元素在列表中的位置。
$(document).on('click',function(){
$('li:nth-child(2)').addClass('selected'); // select the second item (this number varies in the actual code)
index = $('li').index('.selected');
alert('selected item is at index '+index);
});
我认为这应该打印出'selected item is at index 1'
,但它却打印出了'selected item is at index -1'
。
此处演示:http://codepen.io/anon/pen/cvnok
有人能解释一下为什么会这样吗?
编辑
奇怪的观察:如果你把$('li:nth-child(2)')
改成$('li:nth-child(1)')
,那么函数会打印出'selected item is at index 0'
jquery .index()将在三种情况下起作用。
.index ()此签名不接受任何参数。
。索引(选择器)
一个选择器,代表一个jQuery集合,在其中查找元素。。索引(元素)
jQuery对象中要查找的DOM元素或第一个元素。
试试这个:
$(document).on('click',function(){
$('li:nth-child(2)').addClass('selected'); // select the second item (this number varies in the actual code)
index = $('li').index($('.selected')); // this will search for element with class selected.
alert('selected item is at index '+index);
});
裁判:http://api.jquery.com/index/
Try This For Find Selected Index.
$(document).on('click',function(){
$('li:nth-child(2)').addClass('selected');
$('li').each(function(index, element) {
if($(this).hasClass('selected'))
{
alert('selected item is at index '+index);
}
});
});
相关文章:
- Dom 字符串在使用 jQuery attr 操作后不会改变
- JavaScript数组随着DOM的改变而改变
- 我希望我的操作改变它所附加的DOM元素
- 初始化$后的插件.load()改变了DOM
- 改变DOM,但不显示在浏览器中
- 如何调用函数一旦dom元素的样式改变Javascript/jquery
- 我应该如何使用JQuery改变鼠标悬停时DOM元素的背景颜色?
- 变异观察者- DOM被回调函数改变
- 我如何改变css在SAPUI5页面中的每个DOM对象
- jQuery:为什么index()在动态改变DOM后返回-1
- react.js在改变状态数组后不更新DOM
- 在redux状态改变后处理不纯的DOM操作
- 添加一个DOM/SVG元素与d3 javascript库改变变量引用/范围,为什么
- 当元素从DOM中移除时,过渡位置改变
- 改变DOM中标签的位置
- jQuery .detach()不工作时,试图改变元素的位置沿DOM滚动
- 如何将属性改变的事件附加到聚合物的dom-bind上
- 当某个dom元素进入视口时改变音轨
- jQuery DOM的改变需要JS重新运行,JS是一个生命周期
- Angular 2中通过DOM改变iframe url的更好方法