天天看點

JS綁定事件傳參(用于加載頁面後trigger傳遞參數,友善程式控制初始化)1. 問題描述2. 案例3. 總結

1. 問題描述

當頁面第一次加載的時候,主動觸發綁定的事件與使用者觸發綁定事件不完全相同的時候,可以使用js綁定事件傳參。

2. 案例

2.1 單值傳參

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script>
        $(function () {
            //單值傳參
            $("#btn").on("click",function (event,user) {
                alert(user);//彈窗傳遞的參數
                if(user == "user"){
                    $("#appendDom").empty();//清除裡面的dom
                    $("#appendDom").append("<span style='color: #f10'>我是初始化顯示出來的。</span>");//添加
                }else{
                    $("#appendDom").empty();//清除裡面的dom
                    $("#appendDom").append("<span style='color: #f10'>我是被使用者點選顯示出來的。</span>");//添加
                }
            });
            var user = "user";
            //頁面JS加載完畢就觸發一次
            //trigger 第一個參數是綁定事件類型,第二個參數是object類型,即傳遞的參數
            $("#btn").trigger("click",user);
        })
    </script>

</head>
<body>
    <button id="btn">請點選我</button>
    <div id="appendDom"></div>
</body>
</html>
           

2.2 多值傳參

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script>
        $(function () {
            //多值傳參
            $("#btn").on("click",function (event,user,tom) {
                alert(user);//彈窗傳遞的參數
                alert(tom);//彈窗傳遞的參數
                if(user == "user"){
                    $("#appendDom").empty();//清除裡面的dom
                    $("#appendDom").append("<span style='color: #f10'>我是初始化顯示出來的。</span>");//添加
                }else{
                    $("#appendDom").empty();//清除裡面的dom
                    $("#appendDom").append("<span style='color: #f10'>我是被使用者點選顯示出來的。</span>");//添加
                }
                if(tom == "tom"){
                    $("#appendDom").append("<span style='color: #f10'>tom初始化顯示。</span>");//添加
                }
            });
            var user = "user";
            var tom = "tom";
            //頁面JS加載完畢就觸發一次
            //trigger 第一個參數是綁定事件類型,第二個參數是object類型,即傳遞的參數
            $("#btn").trigger("click",[user,tom]);
        })
    </script>

</head>
<body>
    <button id="btn">請點選我</button>
    <div id="appendDom"></div>
</body>
</html>
           

2.3 對象傳參

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <script>
        $(function () {
            //對象傳參
            $("#btn").on("click",function (event,user) {
                alert(user);//彈窗傳遞的參數
                if(user != undefined){
                    $("#appendDom").empty();//清除裡面的dom
                    $("#appendDom").append("<span style='color: #f10'>"+user.name+" 是 "+user.age+" 歲了。</span>");//添加
                }else{
                    $("#appendDom").empty();//清除裡面的dom
                    $("#appendDom").append("<span style='color: #f10'>我是被使用者點選顯示出來的。</span>");//添加
                }

            });
            var user = new Object();
            user.name = "張三";
            user.age=22;

            //頁面JS加載完畢就觸發一次
            //trigger 第一個參數是綁定事件類型,第二個參數是object類型,即傳遞的參數
            $("#btn").trigger("click",user);
        })
    </script>

</head>
<body>
    <button id="btn">請點選我</button>
    <div id="appendDom"></div>
</body>
</html>
           

3. 總結

  1. trigger第二個參數是object類型,隻有兩個參數。
  2. 綁定事件函數,可以接收多個參數,如果trigger第二個參數是數組類型的話。
  3. 綁定事件函數,第一個參數event必須寫,因為第一個參數預設傳遞的是event,是以需要占位。
  4. 用于初始化和綁定事件并不完全一緻的情況下。