$.fn.slideUpTransition = function() {
return this.each(function() {
var $el = $(this);
$el.css("max-height", "0");
$el.addClass("height-transition-hidden");
});
};
在jQuery中,this.each将迭代所有匹配的元素,然后应用该函数。在这里,此作为全局对象保存div的类选择器。
jQuery.fn.init [div.custom-dropdown-body.height-transition, prevObject:jQuery.fn.init(1)]
我们如何使用纯JavaScript实现相同的目标? 我尝试执行以下操作,但无法达到预期效果:
var obj = this;
for(var i=0; i< obj.length; i++){
// codes
};
return this
答案 0 :(得分:2)
这是一个基于NodeList的示例,说明$.each
的工作原理:
NodeList.prototype.each = function(fn) {
for (var i = 0; i < this.length; i++) {
fn.apply(this[i], [i, this[i]]);
}
return this;
};
document.querySelectorAll("p").each(console.log).each(function(i) {
this.textContent = i;
});
<p></p>
<p></p>
<p></p>
(使用jQuery使用的index, element
的相同顺序,而不是element, index
的JS约定!)
编辑:为回调添加了正确的this
绑定