使用javascript创建自己的隐藏类方法
own hide class method using javascript
我正在使用javascript 制作自己的类方法
.hide = function() {
this.each(function(index){
this.style.display="none";
});
};
但这不起作用。你能告诉我我做错了什么吗?
不建议在Javascript中向现有对象添加函数。但是,您可以创建这样的辅助函数:
var hide = function(domEle) {
domEle.style.display="none";
}
为了能够使用您的语法,您可以执行以下操作:
- 创建一个接受dom元素数组的类。或者提供一个函数将dom元素添加到数组中
- 将函数hide添加到上面的类中,而不是每次使用forEach。每个都不是
的一部分Javascript规范。读取MDNhttps://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array
以下是一些相同的基本代码(我还没有测试语法错误):
function myLittleJQuery() {
this._array = [];
}
myLittleJQuery.prototype = {
add: function(domEle) {
this._array.push(domEle);
},
hide: function() {
this._array.forEach(function(domEle){
domEle.style.display = "none";
})
}
}
//Usage
var my$ = new myLittleJQuery();
my$.add(someDomEle);
my$.add(someOtherDomEle);
my$.hide();
Element.prototype.hide = function() {
this.style.display="none";
};
您可以扩展单个DOM元素。在这里,我们将hide方法添加到Element的原型中。如果我当时做
document.querySelector("h2").hide();
页面上的第一个h2元素消失。
这是将方法添加到各个dom元素上。如果你想对dom元素的集合进行操作,那么你必须扩展NodeList
的原型,这是你在进行时得到的对象类型
document.querySelectorAll("h2");
解决这个问题的一种方法是将hide
方法放在每个DOM元素上。然后将不同的hide
方法应用于NodeList
。也许是这样的:
Element.prototype.hide = function() {
this.style.display="none";
};
NodeList.prototype.hide = function() {
for (var i = 0; i < this.length; i++) {
this[i].hide();
}
};
添加这两个方法将为您提供一个灵活的API,允许您在元素列表或单个元素上调用hide
。
然后运行
document.querySelectorAll("h2").hide();
将隐藏页面上的所有h2
元素。
IE6-7不支持此功能。因此,如果这对您来说是一个问题,那么请使用jQuery。
如果您不想扩展DOM元素,那么您仍然可以使用aychedee的代码,但将其定义为一个函数:
var hide = function() {
if(! this)
return null;
var i;
if(this.length){
i=this.length;
while(--i !== -1) {
this[i].style.display="none";
}
return this;
}
this.style.display="none";
return this;
};
hide.call(document.getElementById("someid"));
hide.call(document.getElementsByTagName("p"));
相关文章:
- 使构造函数参数具有ES6类方法的特权
- 可以“;超级“;可以在子类的方法内部使用,在不直接引用的情况下调用相应的超类方法
- Javascript中的类方法
- 在 Array.map() 中调用类方法
- 从类方法中的 ajax post 函数回调函数更改 javascript 类属性
- 引导程序是否有显示隐藏类的方法
- 类方法中的上下文作为变量
- jQuery:隐藏类,以便隐藏该类随后创建的元素
- 如何将类方法设置为等于多个函数?-Javascript
- 将类方法绑定到类外绑定的事件处理程序内的AJAX成功回调
- Node.JS:类方法作为回调
- 如何从将在html页面中使用的java脚本中调用java类方法
- 在类方法中使用React.js静态
- 在不使用@syntax的情况下修饰ES6类方法
- 如何使用jQuery通过ajax调用php类方法,但不需要任何php处理程序文件
- 从常规ES6类方法中调用静态方法
- crypto-js如何隐藏类方法
- 当使用Q/promises/异步函数时,如何将一个值从一个类方法返回到另一个类
- 使用javascript创建自己的隐藏类方法
- 使用 .call/.apply 隐藏类方法