处理DOM元素,隐藏或删除的最佳方法是什么?假设环境可以多次改变.元素可以具有单击回调或其他事件回调.
隐藏
隐藏什么是最好的?如果单击按钮隐藏多个项目,您可以逐个隐藏,或者您也可以创建css规则来执行此操作.
选项1:
<style>
.superContent{/*...*/}
.superContent.noEdit .occultable{
display:none;
}
</style>
<form class=”superContent” action=”...”>
<label>Name</label>
<input type=”text” />
<input type=”submit” class=”occultable” value=”send”/>
</form>
<button id=”hideAll”>Edit</button>
<script type=”text/javascript”>
$(“#hideAll”).click(function(){
$(“.superContent”).toggleClass(“noEdit”);
});
</script>
Run Code Online (Sandbox Code Playgroud)
另一种选择是隐藏所需的项目(这些项目可能很少或很多):
选项2:
<script type=”text/javascript”>
$(“#hideAll”).click(function(){
$(“.occultable”).toggle();
});
</script>
Run Code Online (Sandbox Code Playgroud)
去掉
要修改DOM,您还可以删除不需要的项目,并在以后重新插入.
选项3:
<form class="superContent">
<label>Name</label>
<input type="text" />
<input id="sendbutton" type="submit" class="occultable" value="send"/>
</form>
<button id="hideAll">Edit</button>?
<script type=”text/javascript”>
$("#hideAll").click(function(){
if( $(".superContent").find("#sendbutton").length>0 ){
$(".superContent").find("#sendbutton").remove();
}
else{
$(".superContent").append('<input id="sendbutton" type="submit" class="occultable" value="send"/>');
}
});?
</script>
Run Code Online (Sandbox Code Playgroud)
这些只是一些小例子.假设UI包含大量元素.你觉得什么是最好的选择?哪个内存泄漏少,性能更高?
有一些像kendo-ui这样的javascript框架可以删除元素.jQueryUI更喜欢隐藏项目,但是窗口小部件Tab sortable可以创建由用户临时拖动的选项卡.
在 JavaScript 中,非标准属性 __ proto__ 和函数 Object.getPrototypeOf(...) 返回内部属性 [[Prototype]]。
对于所有函数,属性“prototype”都是 Object.prototype 的实例,例如:
Array.prototype instanceof Object//true
Run Code Online (Sandbox Code Playgroud)
但 Object.prototype 却并非如此:
Object.prototype.__proto__ === null //true
Object.getPrototypeOf( Object.prototype ) === null //true
Run Code Online (Sandbox Code Playgroud)
对象的proto属性引用与其内部 [[Prototype]] (通常称为“原型”)相同的对象,该对象可以是一个对象,也可以是 Object.prototype 的默认情况。原型,空。
Object.prototype 会更合适吗?proto或失败的 Object.getPrototypeOf (Object.prototype) 返回 Object.prototype?
这是一个错误吗?这个可以吗?为什么?