在 jQuery 过滤箭头函数中使用它
Using this inside jQuery filter arrow function
当有这样的代码时:
$elements.filter(() => {
console.log(this); // will be the parent scope's "this"
});
您无法获取应过滤的元素。
所以你需要使用一个普通的函数,比如:
$elements.filter(function(){
console.log($(this)); // will be the element to filter
});
除了使用普通函数,还有其他方法吗?
我知道点击事件可以使用 event.currentTarget
,但 filter
.
中没有事件参数
虽然您没有获得对预期 this
的引用,但可以按以下顺序使用匿名函数提供的参数、索引和 DOM 节点:
$elements.filter((index, node) => {
console.log(node);
});
let $elements = $('li');
$elements.filter((index, node) => {
console.log(node);
});
li {
width: 50%;
border: 2px solid #000;
}
li.red {
border-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li></li>
<li class="red"></li>
<li class="red"></li>
<li></li>
<li class="red"></li>
<li></li>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li></li>
<li></li>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li></li>
<li></li>
<li></li>
</ul>
当有这样的代码时:
$elements.filter(() => {
console.log(this); // will be the parent scope's "this"
});
您无法获取应过滤的元素。 所以你需要使用一个普通的函数,比如:
$elements.filter(function(){
console.log($(this)); // will be the element to filter
});
除了使用普通函数,还有其他方法吗?
我知道点击事件可以使用 event.currentTarget
,但 filter
.
虽然您没有获得对预期 this
的引用,但可以按以下顺序使用匿名函数提供的参数、索引和 DOM 节点:
$elements.filter((index, node) => {
console.log(node);
});
let $elements = $('li');
$elements.filter((index, node) => {
console.log(node);
});
li {
width: 50%;
border: 2px solid #000;
}
li.red {
border-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li></li>
<li class="red"></li>
<li class="red"></li>
<li></li>
<li class="red"></li>
<li></li>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li></li>
<li></li>
<li class="red"></li>
<li class="red"></li>
<li class="red"></li>
<li></li>
<li></li>
<li></li>
</ul>