由于要动态的加入一个easyui渲染的dom对象,可是怎么动态生成都没有样式效果。html
查看文档发现,easyui的渲染是在在网页加载完成后,至关于在$(document).ready()事件中,对整个网页进行了一次扫描,发现某个input标签含有easyui的属性,就在相应的地方进行ui的修改。app
所以,若是咱们用什么append、appendTo方法动态在页面中插入一段html代码,或者用什么addClass方法给input标签动态添加一个class属性,这些操做EasyUI是不知道的,因此新插入的这些东东,即便有class="easyui-XXXXXXX"属性,但没有任何效果。dom
如何通知EasyUI呢?经过查询资料,发现网上比较流行的一种方法是用:$.parser.parse()。通常像我这样的小菜可能就直接拿来用了,把它放在插入html的语句以后,从新渲染界面,果真很管用,新加入的元素能被识别。ui
可是,很快就发现一个问题,因为使用了$.parser.parse()对整个页面从新渲染,这会影响到之前已经渲染过的组件。spa
$.parser.parse()因为它对整个页面进行渲染,之前正常的组件也被渲染了,至关于全部的组件进行了一次“初始化”,最终致使值丢失。code
再次深究 发现$.parser.parse()是能够带参数的,参数意思差很少就是传入一个局部的DOM对象,只对局部进行渲染,避免影响其余组件。htm
var appendDoc=$('<div class="layui-col-md5 layui-col-sm5 layui-col-xs5 fileboxdiv"><input name="file" class="easyui-filebox filebox" /></div>').appendTo("#fileDiv");
$.parser.parse(appendDoc);
咱们经常会经过appendTo方法把使用了datebox组件的input标签插入到某个DOM中,别忘了appendTo方法是有返回值的,返回的偏偏就是刚刚插入的对象。咱们拿到这个对象,单独对它进行渲染,这样既能够实现动态渲染,又能避免影响其它组件。对象