• AJAX异步获取HTML之后 JQuery EasyUI 的界面重绘的解决办法


    当AJAX异步获取了HTML代码之后,这一段代码是包含JQuery EasyUI 的属性和样式的,这时这些属性和样式并不会生效。这里说说解决方案

    我们先来了解页面在刷新或打开时JQuery EasyUI都干了些什么:

    在加载完HTML的时候,JQuery EasyUI 会找class=“easyui-xxxx”的样式来初始化JQuery EasyUI 控件,搜索JQuery EasyUI 混淆之后的源代码,找到这么一段:

    (function($){
    $.parser={auto:true,onComplete:function(_142){
    },plugins:["linkbutton","menu","menubutton","splitbutton","tree","combobox","combotree","numberbox","validatebox","numberspinner","timespinner","calendar","datebox","layout","panel","datagrid","tabs","accordion","window","dialog"],parse:function(_143){
    var aa=[];
    for(var i=0;i<$.parser.plugins.length;i++){
    var name=$.parser.plugins[i];
    var r=$(".easyui-"+name,_143);
    if(r.length){
    if(r[name]){
    r[name]();
    }else{
    aa.push({name:name,jq:r});
    }
    }
    }
    if(aa.length&&window.easyloader){
    var _144=[];
    for(var i=0;i<aa.length;i++){
    _144.push(aa[i].name);
    }
    easyloader.load(_144,function(){
    for(var i=0;i<aa.length;i++){
    var name=aa[i].name;
    var jq=aa[i].jq;
    jq[name]();
    }
    $.parser.onComplete.call($.parser,_143);
    });
    }else{
    $.parser.onComplete.call($.parser,_143);
    }
    }};
    $(function(){
    if(!window.easyloader&&$.parser.auto){
    $.parser.parse();
    }
    });
    })(jQuery);

    当看完之后$.parser.parse();这一句不就是重绘JQuery EasyUI 控件的么。当执行这一句话的时候JQuery EasyUI 会对整个页面的DOM进行解析,效率是比较慢的。当然我们AJAX异步获取的仅仅是一段HTML,没有必要对整个页面进行解析。

    当我们异步获取来的HTML放入一个容器里,比如这样

    $('#xxxx').html(异步获取回来的内容) ,我们在解析这一段异步获取回来的HTML中的JQuery EasyUI控件时,可以这样做:

    $.parser.parse($('#xxxx'));

    这样就只解析$('#xxxx')内部的HTML中的JQuery EasyUI控件。

    此测试已经通过,此方法很可靠。

  • 相关阅读:
    Java理论-Java高级
    Java理论-Java基础
    Java理论-JVM
    Nginx的使用总结
    修改tomcat端口号
    测试目录
    常用的设计模式汇总,超详细!
    Java高级程序员(5年左右)面试的题目集
    集合类--最详细的面试宝典--看这篇就够用了(java 1.8)
    Java面试宝典(2020版)
  • 原文地址:https://www.cnblogs.com/endsock/p/1870331.html
Copyright © 2020-2023  润新知