jqeury easyui 为啥 onBeforLoad里面的$.messager.confirm不能阻止onBeforLoad的执行!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jqeury easyui 为啥 onBeforLoad里面的$.messager.confirm不能阻止onBeforLoad的执行!相关的知识,希望对你有一定的参考价值。

比如
function onBeforLoadDataManual()
debugger;
endEditing();
var updateRows = $('#tab_view_qeury').datagrid('getChanges', 'updated');
if(null != updateRows && updateRows.length > 0)
$.messager.confirm('确认','确认保存当前参数设置吗?',function(r)
if (r)
alert('确认删除');

);

var i = 1+1;


我还没确认它都执行了 var i = 1+1;这里了
或者有什么其他办法?

if(null != updateRows && updateRows.length > 0)
$.messager.confirm('确认','确认保存当前参数设置吗?',function(r)
if (r)
alert('确认删除');
var i = 1+1;
);

else

var i = 1+1;
参考技术A 是异步的原因,我今天也碰到了,easyUI的所有消息提示框都是异步的(官网有提到),因此阻止不了。可以直接返回false(写死),然后根据提示框的结果再回调确定是否关闭。

JQeury添加和删除class内部实现代码(简化版)

     下面是JQuery对元素class操作的简单实现,请看代码:

 

添加class:

    //增加class
    function addClass(elem,value) {   

        var classes, cur, clazz, j, finalValue
        // 如果参数是多个样式设置"a b c"按照\/S+\g空格分割
        classes = (value || "").match(/\S+/g) || [];

        //如果是元素节点,并且有class属性
        //拼接成 " a b c "形式,加上前后空格
        cur = elem.nodeType === 1 && (elem.className ?
            (" " + elem.className + " ").replace(/[\t\r\n\f]/g, " ") :
            " "
        );

        //如果存在样式
        if (cur) {
            j = 0;
            while ((clazz = classes[j++])) {
                //查找下是否不是有重复的,没有就叠加
                if (cur.indexOf(" " + clazz + " ") < 0) {
                    cur += clazz + " ";
                }
            }

            // 去掉前后的空格
            finalValue = jQuery.trim(cur);

            if (elem.className !== finalValue) {
                //赋值
                elem.className = finalValue;
            }
        }
    }

 

移除class:

    //移除样式 
    function removeClass(elem, value) {

        var classes, cur, clazz, j, finalValue
            // 如果参数是多个样式设置"a b c"按照\/S+\g空格分割
        classes = (value || "").match(/\S+/g) || [];

        //如果是元素节点,并且有class属性
        //拼接成 " a b c "形式,加上前后空格
        cur = elem.nodeType === 1 && (elem.className ?
            (" " + elem.className + " ").replace(/[\t\r\n\f]/g, " ") :
            " "
        );

        //如果存在样式
        if (cur) {
            j = 0;
            while ((clazz = classes[j++])) {
                //与addClass的区别在这里
                while (cur.indexOf(" " + clazz + " ") >= 0) {
                    cur = cur.replace(" " + clazz + " ", " ");
                }
            }

            // 去掉前后的空格
            finalValue = jQuery.trim(cur);

            if (elem.className !== finalValue) {
                //赋值
                elem.className = finalValue;
            }
        }
    }

 

其实原理就是通过元素原生className属性获得元素class值(一串字符),然后对这串字符进行各种奇淫技巧拼接,最后再赋值到元素的className属性。

以上是关于jqeury easyui 为啥 onBeforLoad里面的$.messager.confirm不能阻止onBeforLoad的执行!的主要内容,如果未能解决你的问题,请参考以下文章

jsp中使用easyui combobox时,为啥选择项前后会有好长的空格

web--JQeury基础实例汇总

谷歌的jqeury

为啥使用EasyUI DataGrid进行分页设置pageSize却无效

jqeury源码之变量解析

easyui之datagrid为啥后台返回的数据在前台不显示