李迎辉

李迎辉的博客

他的个人主页  他的博客

如何通过一段HTML代码生成DOM对象(mootools)

李迎辉  2009年09月14日 星期一 12:15 | 1741次浏览 | 6条评论

这是我在开发Doto中遇到的一个问题。因为我不想直接在HTML中生成DOM对象,所以我的想法是在后台生成好HTML代码片段,然后在前端生成真正的DOM,再加入到合适的位置上去。但是我查阅了mootools中的Element的文档,没有找到如何从一个HTML代码片段直接生成DOM元素的方法。在jQuery中是可以通过$(html)来直接生成。那么我在mootools中提出了这个问题,并且给出了我的一个解决方法,比如:

var create_dom = function(html){
    var empty = new Element('div');
    empty.set('html', response.html);
    var el = empty.getFirst().clone();
    empty.dispose();
    return el;
}

不过在实际使用中发现,clone()有问题,因为id的信息丢了。于是乎去掉了clone的处理。放在邮件列表中得到了 Fábio M. Costa 响应,下面是一个比较好的方式:

 

var create_dom = function(html){
    var empty = new Element('div', {'html':html});
    var el = empty.getFirst();
    return el;
};

这样简化了代码。但上面的代码说是不能直接table元素。

(Destory有问题,不能这样做。会把它下面的子元素删除。)

同时, Aaron Newton 甚至给出了新版本的mootools中的一个功能。地址在:

http://github.com/mootools/mootools-more/tree/master/Source/Element/Elements.From.js

在这个版本中,不仅处理了table元素。而且考虑到了script的执行和有可能生成多个元素的情况。在我上面的代码只认为只有一个子元素,因此使用的是getFirst()。而Newton给出的则使用了getChildren()这样会返回多个元素。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
電波系山寨文化科学家

回复 電波系山寨文化科学家  2009年09月15日 星期二 15:35

程序生成的东西,直接给人看,哎,现在的做网页的呀,太不敬业了. 做网页的做字儿,原来可是写作design啊...

3条回复

李迎辉

回复 李迎辉  2009年09月15日 星期二 07:43

是的。我以前就用的jQuery。不过我想换一个ajax框架试试。

0条回复

刘磊(V.L.)

回复 刘磊(V.L.)  2009年09月14日 星期一 22:25

感觉jquery的用户群最大,问题更容易解决些。

0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号