由於要動態的加入一個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方法是有返回值的,返回的偏偏就是剛剛插入的對象。咱們拿到這個對象,單獨對它進行渲染,這樣既能夠實現動態渲染,又能避免影響其它組件。對象