日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法

發布時間:2025/4/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

博客分類:
  • ?
  • jquery-easyui
jQueryAjax框架HTML?

現象:

?????? AJAX返回的html無法做到自動渲染為EasyUI的樣式.比如:class="easyui-layout" 等

?

處理方法:

????? 在html片段加載完畢后使用

Js代碼??
  • $.parser.parse(context)??
  • ???? 即可重新渲染。

    ?

    實現原理:

    ?

    ??? 首先附上jquery.parser.js的源碼

    Js代碼??
  • (function($){??
  • ????$.parser?=?{??
  • ????????auto:?true,??
  • ????????plugins:['linkbutton','menu','menubutton','splitbutton','layout',??
  • ?????????????????'tree','window','dialog','datagrid',??
  • ?????????????????'combobox','combotree','numberbox','validatebox',??
  • ?????????????????'calendar','datebox','panel','tabs','accordion'??
  • ????????],??
  • ????????parse:?function(context){??
  • ????????????if?($.parser.auto){??
  • ????????????????for(var?i=0;?i<$.parser.plugins.length;?i++){??
  • ????????????????????(function(){??
  • ????????????????????????var?name?=?$.parser.plugins[i];??
  • ????????????????????????var?r?=?$('.easyui-'?+?name,?context);??
  • ????????????????????????if?(r.length){??
  • ????????????????????????????if?(r[name]){??
  • ????????????????????????????????r[name]();??
  • ????????????????????????????}?else?if?(window.easyloader){??
  • ????????????????????????????????easyloader.load(name,?function(){??
  • ????????????????????????????????????r[name]();??
  • ????????????????????????????????})??
  • ????????????????????????????}??
  • ????????????????????????}??
  • ????????????????????})();??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ????};??
  • ????$(function(){??
  • ????????$.parser.parse();??
  • ????});??
  • })(jQuery);??
  • ?? 框架默認在頁面加載完成后自動使用$.parser.parse()對整個文檔進行渲染

    ?

    1. jQuery EasyUI動態添加控件或者ajax加載頁面后不能自動渲染問題的解決方法:

    我們之所以在頁面中,只要書寫相應easyui的class,Easyui就能成功渲染頁面,這是因為解析器在默認情況下,parser會在文檔裝載完成的時候($(document).ready)被調用一次,而且是渲染整個頁面。

    然而當頁面裝載完后,如果用javascript生成的DOM中包含了Easyui支持控件的class,比如說,用javascript生成了以下代碼:

    <a?id="tt"?href="#"?class="easyui-linkbutton"?data-options="iconCls:'icon-search'">easyui</a>

    ?雖然頁面上有這樣的DOM了,但是沒有被渲染為Easyui的linkbutton插件,原因是Easyui并不會一直監聽頁面,所以不會主動渲染,這時候就需要手工調用Easyui的parser進行解析了。

    手工調用需要注意以下幾點:

    解析目標為指定DOM的所有子孫元素,不包含這個DOM自身:

    比如上面代碼生成的HTML,id="tt"是我們想要的LinkButton,像下面代碼去手工解析的話是得不到你想要的結果的:

    ?$.parser.parse($('#tt'));

    道理很簡單,parser只渲染tt的子孫元素,并不包括tt自身,而它的子孫元素并不包含任何Easyui支持的控件class,所以這個地方就得不到你想要的效果了,應該這樣寫:

    ?$.parser.parse($('#tt').parent());

    渲染tt的父節點的所有子孫元素就可以了,不管你的javascript輸出什么DOM,直接渲染其父節點就可以保證頁面能被正確解析。

    ----------------------------------------------

    試了下,可以。

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的jQuery EasyUI动态添加控件或者ajax加载页面后不能自动渲染问题的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。