Dom迴圈點擊處理外掛程式

來源:互聯網
上載者:User

標籤:jquery   js   

Web互動中,有種很常見的情況就是,當某個dom被第一次點擊時,執行某種操作,第二次被點擊時,執行另一種操作……第N次被點擊時,執行第N種操作,當N+1時,有開始執行第一種操作,如此往複迴圈……

就這麼一個dom的重複點擊事件我也能無聊到做個外掛程式出來,當真腦殘,但既然做出來了,那就再次記錄下,記錄自己的腦殘人生!

PS:此外掛程式基於JQuery,以下是相關代碼,其中參數methodName可以不傳,此時表示對dom進行click事件綁定,如果傳入非Null 字元串,則表示要執行相應的方法,暫時該外掛程式只提供了一個執行第幾個動作的方法

<span style="white-space:pre"></span>$.fn.domClickRange = function (arg, methodName) {            /// <summary>用於處理迴圈的點擊動作</summary>            /// <param name="arg">請求參數.clickEvent傳遞的參數clickDom對應當前被點擊的dom對象;clickNumber對應當前的點擊動作為設定的GroupRange中的第幾個點擊動作,從0開始計算</param>            /// <param name="methodName">要執行的方法</param>            if (typeof methodName === "string" && $.trim(methodName) != "") {                switch (methodName) {                    case "clickImmediately"://立刻執行第幾個點擊動作,可用於批量執行dom操作                        var clickNumber = ~~arg;                        $(this).each(function () {                            var arg = $(this).data('domClickRangeArg');                            if (arg != null && typeof arg.clickEvent === "function") {                                var clickItem = getClickItem(this, arg);                                clickItem.data("clickNumber", clickNumber - 1 >= 0 ? clickNumber - 1 : arg.clickGroupRange - 1);                                clickItem.click();                            }                        });                        break;                }            }            else {//執行初始化                var setting = {                    clickSelector: null,//要綁定點擊動作的selector,如果傳入null或者Null 字元串表示要綁定點擊事件的為當前dom                    clickDefaultNumer: 0,//預設為第幾次點擊動作                    clickGroupRange: 2,//設定多少次點擊動作為一組點擊動作,即點擊多少次為一輪                    clickEvent: function (clickDom, clickNumber) { } //dom被點擊時要觸發的函數                };                arg = $.extend({}, setting, arg);                arg.clickDefaultNumer = ~~arg.clickDefaultNumer;//取整                arg.clickGroupRange = ~~arg.clickGroupRange;//取整                $(this).data('domClickRangeArg', arg);                $(this).each(function () {                    var clickItem = getClickItem(this, arg);                    clickItem.data("clickNumber", arg.clickDefaultNumer);                    clickItem.click(function () {                        var prevClickNumber = ~~$(this).data("clickNumber");//之前的點擊標誌                        var nowClickNumber = ~~((prevClickNumber + 1) % arg.clickGroupRange);                        $(this).data("clickNumber", nowClickNumber);                        if (typeof arg.clickEvent === "function") {                            arg.clickEvent(this, nowClickNumber);                        }                        return false;                    });                });            }            function getClickItem(dom, arg) {                var clickItem = $(dom);                if (typeof arg.clickSelector === "string" && $.trim(arg.clickSelector) != "") {                    clickItem = $(dom).find(arg.clickSelector);                }                return clickItem;            }        };


以下是測試用的demo

html部分如下,bt_Button為要綁定點擊事件的按鈕,sp_Number用於顯示當前是第幾次點擊,bt_Immediately用於執行clickImmediately方法,ipt_Number用於傳入要離可以執行的點擊順序編號

    <div>        <input type="button" id="bt_Button" value="Click" /> nowClickNumber:<span id="sp_Number"></span>    </div>    <div><input type="button" id="bt_Immediately" value="ClickImmediately" /><input type="text" id="ipt_Number" value="12" /></div>

用於測試的js代碼如下

<span style="white-space:pre"></span>$().ready(function () {            $('#bt_Button').domClickRange({                clickDefaultNumer: 9,                clickGroupRange: 15,                clickEvent: function (clickDom, clickNumber) {                    console.info($(clickDom).attr('id') + clickNumber);                    $('#sp_Number').html(clickNumber);                }            });            $('#bt_Immediately').click(function () {                $('#bt_Button').domClickRange($('#ipt_Number').val(), 'clickImmediately');            });        });

最後來張腦殘


Dom迴圈點擊處理外掛程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.