DOM方法index()相关问题(为何$(this).index(this)是错误的 )
2014-07-25 20:41
190 查看
写jQuery的时候遇到一个关于index()的问题,查找相关资料后,解决了,把自己的想法写在下面。
index() 方法返回指定元素相对于其他指定元素的 index 位置。
完全语法为:$(selector).index(element) ,其中element为可选参数。
1、若是省略element,则 获得第一个匹配元素相对于其同胞元素的 index 位置。
例如在如下代码中
$(this).index(); $(this)代表的是点击的那个 li 元素,index()获得是这个 li 元素(它本身即是第一个匹配自己的元素)相对于它的同胞元素的索引值。这个是正确的,是我们所需要的效果。
若是写成:$('ul li').index(); 则输出的值都是 0 ,因为 $('ul li').index() 获取的是li元素下第一个匹配的元素相对于同胞元素的索引值,即第0个元素。
2、不省略element元素
还是上述代码,若改成$(this).index(this),则输出的值全部为0。
这是因为,加上了element元素后 $(selector).index(element),是获得元素相对于选择器的 index 位置。
也就是说,$(this).index(this) 这样写的话,我们是获取的当前点击的 li 相对于它本身的位置,即0。
若是写成 $('ul li').index(this) 则是可以的,因为获取到的是点击的 li 元素相对于选择器选择的ul下的 li 元素的位置,因此可以得到正确的索引值。
总结
综上,我们知道 $(this).index() = $('ul li').index(this) ,这两种方式在我们的语境中能正确的获取到元素的索引值。
这说白了还是对选择器(selector)和this的理解问题。
index() 方法返回指定元素相对于其他指定元素的 index 位置。
完全语法为:$(selector).index(element) ,其中element为可选参数。
1、若是省略element,则 获得第一个匹配元素相对于其同胞元素的 index 位置。
例如在如下代码中
<html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("ul li").click(function(){ alert($(this).index()); }); }); </script> </head> <body> <p>点击列表项可获得其相对于同胞元素的 index 位置:</p> <ul> <li>Coffee</li> <li>Milk</li> <li>Soda</li> </ul> </body> </html>
$(this).index(); $(this)代表的是点击的那个 li 元素,index()获得是这个 li 元素(它本身即是第一个匹配自己的元素)相对于它的同胞元素的索引值。这个是正确的,是我们所需要的效果。
若是写成:$('ul li').index(); 则输出的值都是 0 ,因为 $('ul li').index() 获取的是li元素下第一个匹配的元素相对于同胞元素的索引值,即第0个元素。
2、不省略element元素
还是上述代码,若改成$(this).index(this),则输出的值全部为0。
这是因为,加上了element元素后 $(selector).index(element),是获得元素相对于选择器的 index 位置。
也就是说,$(this).index(this) 这样写的话,我们是获取的当前点击的 li 相对于它本身的位置,即0。
若是写成 $('ul li').index(this) 则是可以的,因为获取到的是点击的 li 元素相对于选择器选择的ul下的 li 元素的位置,因此可以得到正确的索引值。
总结
综上,我们知道 $(this).index() = $('ul li').index(this) ,这两种方式在我们的语境中能正确的获取到元素的索引值。
这说白了还是对选择器(selector)和this的理解问题。
相关文章推荐
- Sql Server 相关错误问题及解决方法
- 《同一个类中不同方法之间的调用相关问题(省略的类名或者this)》
- 关于asp.net[没有相关的源行]错误的解决方法及IIS安装问题
- JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题
- Linux遇到的问题(一)Ubuntu报“xxx is not in the sudoers file.This incident will be reported” 错误解决方法
- JavaScript call apply使用——JavaScript对象的方法绑定到DOM事件后this指向问题
- 关于"xampp中mysql中配置问题:Unknown initial character set index '48' received from server错误解决方法"
- DOM相关属性,方法,兼容性问题处理小析
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- js学习总结之DOM2兼容处理this问题的解决方法
- 关于asp.net[没有相关的源行]错误的解决方法及IIS安装问题
- 利用ajax在index页面自动执行方法并显示相关内容,在执行相关按钮操作(如登录注册)后返回index页面后ajax不执行,无法显示相关内容的问题解决方法之一
- IE问题解决方法汇总(错误报告篇)
- 关于使用VS.Net2003调试器出现的问题及相关解决方法[转]
- 工作流挖掘:相关问题和方法的研究
- 重装SQL Server 2005遇到问题“性能监视器计数要求(错误)”的解决方法
- 编译错误error C2370: 'THIS_FILE' : redefinition的解决方法
- asp.net ajax 错误:"sys"未定义问题 解决的方法
- "执行SQL语句时出现问题操作必须使用一个可更新的查询"错误的解决方法