封裝基於jq彈窗插件

来源:http://www.cnblogs.com/sunpengwei/archive/2017/06/02/6934307.html
-Advertisement-
Play Games

相信碼友們對於$.fn.extexd();$.extend()以及$.fn.custom和$.custom都有一定的瞭解;我闡述一下我自己對於$.fn.custom和$.custom的理解、有理解錯誤或是有更好的建議直接噴我就好! 下麵咱們進行簡單插件的封裝; Jquery為開發插件提供了兩個方法, ...


相信碼友們對於$.fn.extexd();$.extend()以及$.fn.custom和$.custom都有一定的瞭解;我闡述一下我自己對於$.fn.custom和$.custom的理解、有理解錯誤或是有更好的建議直接噴我就好!

下麵咱們進行簡單插件的封裝;

Jquery為開發插件提供了兩個方法,分別是:

$.fn.INFOplug= $.INF_Oplug=function(){}

先簡單的闡述下這兩種方法:

這兩個分別是:

$.INFplug;是為了擴展jquery本身,為類添加新的工具方法;

$.fn.INFOplug;給jquery對象添加方法。

例子:

$.fn.INFOplug=function(a,b){

alert(a+b)

};

$.INF_Oplug=function(a,b){

alert(a+b)

}

該兩種方法分別:

在jquery對象上創建了一個INFOplug方法;該方法中列印a+b;

在jquery上拓展了工具INF_Oplug方法;列印如上a+b;

兩者的使用方法是不同的,下麵舉個實例:

INFOplug方法:

$('div).INFOplug(4,5);

INF_Oplug方法:

$.INF_Oplug(4,5)

這是兩者大致的意思,下麵我們用這兩個方法進行封裝一個基於jquery的彈窗插件,代碼如下:

 

 1 (function($){
 2     var __INFO__ = {
 3         plug:'jquerySpwialog',
 4         ver:'1.0.1.2',
 5         author:'sunpengwei'
 6     };
 7     var defaults = {
 8         title:"",
 9         tips:"",
10         txt:null,
11         ok:"確定",
12         cancel:"",
13         callback:function(){},
14         htmls:'<div id="jquery_dn_dialog_mask" style="background:rgba(0,0,0,0.3);width:100%;height:100%;position:fixed;top:0;left:0;z-index:2147483647">\
15                 <div id="jqurey_dn_dialog_main" style="background:#dedede;left:50%;top:50%;position:absolute;transform:translate(-50%,-50%);border-radius:10px;overflow:hidden;min-width:270px">\
16                       <h1 id="jqdndialog_title" style="text-align:center;font-size:22px;padding:10px 0 0 0;magring:10px 5px">彈窗標題</h1>\
17                       <div id="jqdndialog_tips" style="font-size:18px;margin:0 17px;padding:0 0 20px 0">彈窗內容</div>\
18                     <p style="margin:5px 20px">\
19                         <input id="jqdndialog_txt" type="text" style="border-radius:5px;width:100%;line-height:30px;font-size:20px;border:0px">\
20                     </p>\
21                     <div id="jqdndialog_button" style="border-top:1px solid #b8b8b8;display:flex;justify-content:space-around;">\
22                         <a href="javascript:;" style="color:#007aff;font-weight:bold;display:inline-block;height:44px;line-height:44px;text-align:center;text-decoration:none;width:100%">按鈕</a>\
23                         <a href="javascript:;" style="color:#007aff;font-weight:bold;display:inline-block;height:44px;line-height:44px;text-align:center;text-decoration:none;width:100%;border-left: 1px solid #b8b8b8" >按鈕</a>\
24                     </div>\
25                 </div>\
26             </div>'
27     };
28 
29     $.fn[__INFO__.plug] = $[__INFO__.plug] = function(options){
30         var settings = $.extend({},defaults,options);
31 
32         //初始化
33         var initDOM = function(conf){
34             if(conf) settings = $.extend({},settings,conf);
35             //獲取元素
36             var $mask = $(settings.htmls).appendTo(document.body);
37             var $main = $mask.children("#jqurey_dn_dialog_main");
38             var $title = $main.children("#jqdndialog_title");
39             var $tips = $main.children("#jqdndialog_tips");
40             var $txt = $main.find("#jqdndialog_txt");
41             var $ok = $main.find("#jqdndialog_button a:first");
42             var $cancel = $main.find("#jqdndialog_button a:last");
43             //賦值
44             $title.html(settings.title);
45             $tips.html(settings.tips);
46             if(settings.txt === null){
47                 $txt.hide();
48             }else{
49                 $txt.val(settings.txt).focus();
50             }
51             
52             $ok.html(settings.ok);
53             if(settings.cancel){
54                 $cancel.html(settings.cancel);
55             }else{
56                 $cancel.hide();
57             }
58 
59             $main.find("#jqdndialog_button a").bind("touchstart click",function(e){
60                 console.log(e.type);
61                 e.preventDefault();
62                 e.stopPropagation();
63                 var res = {result:$(this).text()};
64                 if(settings.txt !== null) res.texts = $txt.val();
65 
66                 if(settings.callback) settings.callback(res);
67                 $mask.remove();
68 
69             }).hover(function(){
70                 $(this).css("background","#d2d2d2");
71             }, function(){
72                 $(this).css("background","transparent");
73             });
74         };
75 
76         this.bind("touchstart click",function(e){
77             e.preventDefault();
78             e.stopPropagation();
79             initDOM();
80         });
81 
82         if($.isFunction(this)) initDOM();
83         this.showSpwialog  = function(options){
84             initDOM(options);
85         }
86 
87         return this;
88     };
89 })(jQuery);

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.什麼是介面? 介面是事物最高的概括,從最高層次上設計了事物的形態。本質上是一系列規範,所有實現了介面的類都實現了該規範,從而使得在相容該規範的地方任何一個實現類都適用。 2.什麼是面向介面編程? 需求商品時,不是指定特定的商品,而是指定需求的條件,任何一個符合條件的事物都可以成為合格的商品。具體 ...
  • 1.什麼是功能模塊化 將實現不同功能的代碼分別存放到不同的文件、類、方法中,每一個文件、類、方法都是一個實現單一功能的模塊。 2.為什麼使用模塊化 模塊化的文件、類、方法功能單一,可以相對獨立存在,不僅降低了對其他對象的依賴,而且層次清晰,便於維護。 3.模塊化的具體實現方法 通過增加模塊數目減小單 ...
  • avalon2是一款基於虛擬DOM與屬性劫持的 迷你、 易用、 高性能 的 前端MVVM框架, 擁有超優秀的相容性, 支持移動開發, 後端渲染, WEB Component式組件開發, 無需編譯, 開箱即用。 官網:http://avalonjs.coding.me/ 《Avalon探索之旅》第一講 ...
  • Math.ceil():向上取整 Math.floor():向下取整 Math.round():四捨五入 需要註意的比如:Math.ceil(-1.6) = -1.0; Math.round(-1.5) = -1; Math.round(-1.6) = -2; ...
  • Sticky footer佈局是什麼? 我們所見到的大部分網站頁面,都會把一個頁面分為頭部區塊、內容區塊和頁腳區塊,當頭部區塊和內容區塊內容較少時,頁腳能固定在屏幕的底部,而非隨著文檔流排布。當頁面內容較多時,頁腳能隨著文檔流自動撐開,顯示在頁面的最底部,這就是Sticky footer佈局。 圖示 ...
  • JavaScript的類型 原始類型: number string boolean null undefined 對象類型: Object function Array Date ... 隱式轉換 運算 "37" + 7 = "377" "37" 7 = 30 運算 以下為true: "1.23" ...
  • var result={ "a":{ "x":5, "y":0, "z":0 }, "b":{ "x":0, "y":0, "z":3 }, "c":{ "x":5, "y":0, "z":0 }, ... ...
  • [1]概述 [2]屬性 [3]方法 [4]輸入輸出流 [5]事件 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...