在mootools中.innerHTML和.set(' html','')之间有什么区别?

时间:2012-02-02 15:36:49

标签: mootools

要在我的网站上设置元素的html,我主要使用

$('elementId').innerHTML = "<p>text</p>";

通过mootools文档,我发现了这个例子:

$('myElement').set('html', '<div></div><p></p>');

这些之间有什么区别吗?我应该通过并将.innerHTML更改为mootools方法,还是不会产生影响?

1 个答案:

答案 0 :(得分:3)

第一个工作的原因是因为 - 就像它一样 - mootools中的$ selector(document.id)返回实际的元素。这 - 在普通浏览器中 - 与document.getElementById()相同,元素对象公开其任何及所有属性/属性供您编辑。

NOT使用.set的问题是:

  • 当mootools 2.0 aka MILK被释放时,它将无法正常运行,因为它将像jQuery一样被包裹并且选择器不会返回对象(mootools正在变成AMD,因此它不会修改本机类型 - 元素,数组,数字,字符串,函数(也许!) - 原型)。
  • 你不能把它链起来。例如,使用set,您可以:$('someid').set("html", "loading...").highlight();
  • set重载 - 它可以通过传递对象来设置单个属性或倍数。例如,element.set({html: "hello", href: "#", events: boundObj});
  • 查看https://github.com/mootools/mootools-core/blob/master/Source/Element/Element.js#L936-942 - 您可以将数组作为参数传递,它会为您加入它,这样可以轻松使用多行字符串并确保IE中的性能

编辑:BBT粉丝打开了一个单独的主题:框架是否会阻止你/阻止你做破坏浏览器的事情?

  • 如果你愿意,你可以通过更改setter Element.Properties.html.set = function() { var tag = this.get("tag"); ... check tag };来添加不允许的元素 - 这不是很棒吗?

mootools - 默认情况下 - 不会试图阻止你做愚蠢的狗屎[tm] - 这是你的责任:)例如,尝试在元素中将元素的高度设置为负值。应该Fx类阻止你这样做吗?不,请问安装员会阻止你吗?不会。持续检查的足迹,看你是不是破坏意味着它会减慢动作等性能关键情况下的一切。