jQuery中每个循环的目标$(this)
Targeting $(this) within nested for each loops in jQuery
我试图弄清楚,当通过一些列表项迭代时,如何在嵌套的foreach循环中针对每个"$(this)"等效。下面是我的问题的一个例子:
$('li').each(function(){
// I believe $(this) would target each li item...
$(this).children("li").each(function(){
// ... but how can I target each of these li items? Doesn't $(this) target the original loop?
});
});
$('li').each(function(){
var $this = $(this);
$this.children("li").each(function(){
$this; // parent li
this; // child li
});
});
不要使用this
!使用函数参数!
$('li').each(function(i, li){
$(li).children("li").each(function(ii, li2){
$(li)...
$(li2)...
});
});
这更符合原生JavaScript迭代器。
…虽然<li>
不能是另一个<li>
的直接子
看看jQuery函数(或者方法,如果你愿意的话)的基本"原型":
$[jQobject].[func]([callback]);
回调是在jQ对象上下文中调用的函数。显然,上下文是this
。简单地说,这意味着:
$('#foo').click(function(){});
/' /'
|| Is the context ||
=====================
同样适用于您的情况,无论循环是否嵌套:
$('ul').each(function()
{
//this is ul
var that = this;//you'll often see code like this
$('li', this).each(function()
{
//this is li
//that is parent ul
});
});
但是我如何针对每一个li项呢?$(this)不是以原始循环为目标吗?
不。
this
来自于你直接的函数。
不,this
指的是<li>
的每一个子条目。试一试。
大多数(如果不是全部)DOM交互的jQuery回调将this
设置为您正在使用的DOM元素。
你也可以这样写:
$('li').children("li").each(function(){
var $this = $(this);
});
相关文章:
- $(this).prop('property') vs. this.property
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 在另一个函数中使用变量this
- this.router在AngularJS 2中未定义
- reactjs this.refs vs document.getElementById
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- Href:当前DIV中的目标ID
- JavaScript 中的嵌套函数和 “this” 关键字
- React+Meteor:this.ops返回未定义
- javascript中对象构造函数中的var属性与this.properties
- 函数中this和var之间的区别
- 当使用extern和目标JavaScript时,我如何强制Haxe编译器使用require语句
- jQuery(this).Pparent().Pparente().Prent().find()在iPad上不起作用
- 以ECMAScript 5及更高版本为目标时,八进制文字不可用
- 目标:在使用$(this)之后
- 当无法使用 $(this) 时,目标单个元素
- jQuery中每个循环的目标$(this)
- javascript“this"未能命中目标