zoukankan      html  css  js  c++  java
  • 知问前端——对话框UI(二)

       dialog()方法的事件

       除了属性设置外,dialog()方法也提供了大量的事件,这些事件可以给各种不同状态时的对话框提供回调函数,这些回调函数中的this值等于对话框内容的div对象,不是整个对话框的div。

       dialog事件选项

    事件名 说明
    focus 当对话框被激活时(首次显示以及每次在上面点击)会调用focus方法,该方法有两个参数(event, ui)。此事件中的ui参数为空。
    create 当对话框被创建时会调用create方法,该方法有两个参数(event, ui)。此事件中的ui参数为空。
    open 当对话框被显示时(首次显示或调用dialog('open')方法)会调用open方法,该方法有两个参数(event, ui)。此事件中的ui参数为空。
    beforeClose 当对话框将要关闭时(当单击关闭按钮或调用dialog('close')方法),会调用beforeClose方法。如果该函数返回false,对话框将不会被关闭。关闭的对话框可以用dialog('open')重新打开。该方法有两个参数(event, ui)。此事件中的ui参数为空。
    close 当对话框关闭后(当单击关闭按钮或调用dialog('close')方法),会调用close方法。关闭的对话框可以用dialog('open')重新打开。该方法有两个参数(event,ui)。此事件中的ui参数为空。
    drag 当对话框移动时,每次移动一点均会调用drag方法。该方法有两个参数。该方法有两个参数(event, ui)。此事件中的ui有两个属性对象:
    1.position,得到当前移动的坐标,有两个子属性:top和left。
    2.offset, 得到当前移动的坐标, 有两个子属性: top和left。
    dragStart 当开始移动对话框时,会调用dragStart方法。该方法有两个参数(event, ui)。此事件中的ui有两个属性对象:
    1.position,得到当前移动的坐标,有两个子属性:top和left。
    2.offset, 得到当前移动的坐标, 有两个子属性: top和left。
    dragStop 当结束移动对话框时,会调用dragStop方法。该方法有两个参数(event, ui)。此事件中的ui有两个属性对象:
    1.position,得到当前移动的坐标,有两个子属性:top和left。
    2.offset,得到当前移动的坐标, 有两个子属性: top和left。
    resize 当对话框拉升大小的时候,每一次拖拉都会调用resize方法。该方法有两个参数(event, ui)。此事件中的ui有四个属性对象:
    1.size,得到对话框的大小,有两个子属性:width和height。
    2.position,得到对话框的坐标,有两个子属性:top和left。
    3.originalSize,得到对话框原始的大小,有两个子属性:width和height。
    4.originalPosition,得到对话框原始的坐标,有两个子属性:top和left。
    resizeStart 当开始拖拉对话框时,会调用resizeStart方法。该方法有两个参数(event, ui)。此事件中的ui有四个属性对象:
    1.size,得到对话框的大小,有两个子属性:width和height。
    2.position,得到对话框的坐标,有两个子属性:top和left。
    3.originalSize,得到对话框原始的大小,有两个子属性:width和height。
    4.originalPosition,得到对话框原始的坐标,有两个子属性:top和left。
    resizeStop 当结束拖拉对话框时,会调用resizeStop方法。该方法有两个参数(event, ui)。此事件中的ui有四个属性对象:
    1.size,得到对话框的大小,有两个子属性:width和height。
    2.position,得到对话框的坐标,有两个子属性:top和left。
    3.originalSize,得到对话框原始的大小,有两个子属性:width和height。
    4.originalPosition,得到对话框原始的坐标,有两个子属性:top和left。

       jQuery代码:

       index.html:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>知问前端</title>
        <script type="text/javascript" src="jquery-1.12.3.js"></script>
        <script type="text/javascript" src="jquery-ui.js"></script>
        <script type="text/javascript" src="index.js"></script>
        <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico" />
        <link rel="stylesheet" type="text/css" href="jquery-ui.css" />
        <link rel="stylesheet" type="text/css" href="style.css" />
    </head>
    <body>
        <div id="header">
            <div class="header_main">
                <h1>知问</h1>
                <div class="header_search">
                    <input type="text" name="search" class="search" />
                </div>
                <div class="header_button">
                    <input type="button" value="查询" id="search_button" />
                </div>
                <div class="header_member">
                    <a href="###" id="reg_a">注册</a> | <a href="###" id="login_a">登录</a>
                </div>
            </div>
        </div>
        
        <div id="reg" title="会员注册">
            表单区--会员注册
        </div>
    
        <div id="login" title="会员登录">
            表单区--会员登录
        </div>
    
    </body>
    </html>

       focus——当对话框获得焦点后,【当对话框被激活时(首次显示以及每次在上面点击)会调用focus方法】:

    $("#reg").dialog({
        focus:function(e,ui) {
            alert("注册!");
        }
    });
    $("#login").dialog({
        focus:function(e,ui) {
            alert("登录!");
        }
    });

       当点击会员注册对话框,会调用其对应的focus();当点击会员登录对话框,会调用其对应的focus()。

       create——当创建对话框时:

    $('#reg').dialog({
        create : function(e, ui) {
            alert('创建对话框');
        }
    });

       open——①当首次显示对话框时:

    $('#reg').dialog({
        open:function() {
            alert("首次打开对话时触发!");
        }
    });

       ②当调用dialog('open')方法显示对话框时:

    $('#reg').dialog({
        autoOpen:false,
        open:function() {
            alert("调用dialog('open')方法打开对话时触发!");
        }
    });
    $("#reg_a").click(function() {
        $("#reg").dialog("open");
    });

       close——①当单击关闭按钮关闭对话框时:

    $('#reg').dialog({
        close:function() {
            alert("单击关闭按钮关闭对话框!");
        }
    });

       ②调用dialog('close')方法关闭对话框时:

    $('#reg').dialog({
        autoOpen:false,
        close:function() {
            alert("调用dialog('close')方法关闭对话框!");
        }
    });
    //点击div(id="reg")元素关闭 $(
    "#reg").click(function() { $("#reg").dialog("close"); });

       beforeClose——同close,只是对话框将要关闭时(我觉得应该是在关闭之前)(当单击关闭按钮或调用dialog('close')方法),会调用beforeClose方法。如:

    $('#reg').dialog({
        beforeClose:function() {
            alert("对话框将要关闭,关闭前做的事!");
        }
    });

       如果该函数返回false,对话框将不会被关闭:

    $('#reg').dialog({
        //这个事件可以做一些关闭确认的工作
        beforeClose:function() {
            alert("对话框将要关闭,关闭前做的事!");
            return false;
        }
    });

       drag——当对话框移动时,每次移动一点均会调用drag方法,每次移动一点这让人很烦!

    $('#reg').dialog({
        drag:function() {
            alert("每次移动都执行!");
        }
    });

       此事件中的ui有两个属性对象,我们只测试position属性对象:position,得到当前移动的坐标,有两个子属性:top和left。

    $('#reg').dialog({
        drag:function(e,ui) {
            alert("top:" + ui.position.top + "
    "
                +"left:" + ui.position.left);
        }
    });

       dragStart——当开始移动对话框时,会调用dragStart方法,同上。

    $('#reg').dialog({
        dragStart:function(e,ui) {
            alert("top:" + ui.position.top + "
    "
                +"left:" + ui.position.left);
        }
    });

       dragStop——当结束移动对话框时,会调用dragStop方法,同上。

    $('#reg').dialog({
        dragStop:function(e,ui) {
            alert("top:" + ui.position.top + "
    "
                +"left:" + ui.position.left);
        }
    });

       resize——当对话框拉升大小的时候,每一次拖拉都会调用resize方法,同样,这一点也让人很烦!

    $('#reg').dialog({
        resize:function() {
            alert("每次调整大小都执行!");
        }
    });

       此事件中的ui有四个属性对象,我们只测试size属性对象:size,得到对话框的大小,有两个子属性:width和height。

    $('#reg').dialog({
        resize:function(e,ui) {
            alert("" + ui.size.width + "
    " +
                   "height:" + ui.size.height);
        }
    });

       resizeStart——当开始拖拉对话框时,会调用 resizeStart方法,同上。

    $('#reg').dialog({
        resizeStart:function(e,ui) {
            alert("" + ui.size.width + "
    " +
                   "height:" + ui.size.height);
        }
    });

       resizeStop——当结束拖拉对话框时,会调用resizeStop方法,同上。

    $('#reg').dialog({
        resizeStop:function(e,ui) {
            alert("" + ui.size.width + "
    " +
                   "height:" + ui.size.height);
        }
    });

       dialog('action',param)方法

    方法 返回值 说明
    dialog('open') jQuery对象 打开对话框
    dialog('close') jQuery对象 关闭对话框
    dialog('destroy') jQuery对象 删除对话框,直接阻断了dialog
    dialog('isOpen') 布尔值 判断对话框是否打开状态
    dialog('widget') jQuery对象 获取对话框的jQuery对象
    dialog('option',param) 一般值 获取options属性的值
    dialog('option',param,value) jQuery对象 设置options属性的值

       注意:dialog('close')和dialog('destroy')的区别,dialog('close')是将对话框隐藏起来,即display: none;而dialog('destroy')是将对话框销毁掉。

       初始隐藏对话框:

    $('#reg').dialog({
        autoOpen : false
    });

       打开对话框:

    $('#reg_a').click(function () {
        $('#reg').dialog('open');
    });

       点击div(id="reg")元素关闭或销毁对话框:

    $("#reg").click(function() {
        $("#reg").dialog("close"); //dialog('close')是将对话框隐藏起来,即display: none
        $("#reg").dialog("destroy"); //dialog('destroy')是将对话框直接销毁掉
    });

       判断对话框打开或关闭状态:

    alert($("#reg").dialog("isOpen")); //若对话框属性autoOpen:false,则返回false,反之,则返回true

       现在来讨论dialog('open')和dialog('widget')的返回值!

       dialog('open'):

    $('#reg').dialog({
        autoOpen : false
    });
    alert($("#reg").dialog("open")); //[object Object],返回jQuery对象,即对话框内容的div(id="reg")对象

       所以可以连缀使用常用方法:

    $("#reg").dialog("open").css("font-size", "50px");

       dialog('widget'):

    $("#reg").dialog("open");
    alert($("#reg").dialog("widget")); //返回整个对话框div对象

       当然可以连缀使用了。

    $("#reg").dialog("widget").css("font-size", "50px"); 

       获取某个options的param选项的值:

    alert($("#reg").dialog("option","title"));
    alert($("#reg").dialog("option","autoOpen")); //若对话框属性autoOpen:false,则返回false,反之,则返回true,同alert($("#reg").dialog("isOpen")); 

       设置某个options的param选项的值:

    $("#reg").dialog("option","title","我爱李阿昀");

       dialog中使用on()

       在dialog的事件中,提供了使用on()方法处理的事件方法。

       on()方法触发的对话框事件

    特效名称 说明
    dialogfocus 得到焦点时触发
    dialogopen 显示时触发
    dialogbeforeclose 将要关闭时触发
    dialogclose 关闭时触发
    dialogdrag 每一次移动时触发
    dialogdragstart 开始移动时触发
    dialogdragstop 移动结束后触发
    dialogresize 每次调整大小时触发
    dialogresizestart 开始调整大小时触发
    dialogresizestop 结束调整大小时触发

       on()方法的使用同上,现只讨论dialogclose事件:

    $("#reg").on("dialogclose",function() {
        alert("关闭!");
    });

       注意:还必须点击关闭按钮才能关闭对话框。

      

  • 相关阅读:
    [组件封装] 微信小程序
    发布一个npm包(webpack loader)
    深入理解JavaScript隐式类型转换(详解 +
    通过nginx代理之后,获取客户端ip
    IntelliJ Idea 常用快捷键列表
    Example For maven-compiler-plugin
    maven 使用tomcat插件 自动化部署war
    jsoup: Java HTML Parser (类似jquery)
    Export Data from mysql Workbench 6.0
    安装openJDK 8
  • 原文地址:https://www.cnblogs.com/yerenyuan/p/5445205.html
Copyright © 2011-2022 走看看