簡單jquery元件開發
寫這篇文章主要是對自己以前學習jquery外掛的總結。現在元件化開發,以vuejs 、 reactjs 、angular 為代表的庫或框架讓web元件化開發逐漸推廣起來。下面是我用jquery寫的一款簡易的提示框元件。雖然沒有遵守mvc寫法,但也是很實用。
效果:
有時使用者執行某個操作時,需要彈出提示框讓使用者確定執行某個回撥函式,這樣就有效的避免使用者因操作失誤執行不該執行的操作。
程式碼
/**
* Created by helti on 2017/2/16 0016.
*/
!(function(window,$,undefined){
var htmls={
'popbg' :'<div class="pop-bg"></div>',
'pwraper':'<div class="p-wraper"></div>',
'popheader':'<div class="p-heaer"></div>',
'popdes':'<p class="p-des"></p>',
'palert':'<div class="p-alert"><button id="btn-ok">確定</button></div>' ,
'pconfim':'<div class="p-confim"><button class="btn-ok">確定</button> <button class="btn-cancel">取消</button></div>'
};
var winpop=function(opt,callback){
var defaults={
headercon:'',
popdes:''
}
this.options= $.extend({},defaults,opt);
this .$body=$('body');
//背景
this.$popbg=$(htmls.popbg);
//pop父容器
this.$wraper=$(htmls.pwraper);
if(callback !='undefined'){
if(typeof callback == 'function'){
this.callback=callback;
}
}else{
throw new Error ('callback need function')
}
};
winpop.prototype={
/*
alert 或者 confim
*/
createdom:function(ele){
var $popheaer=$(htmls.popheader).text(this.options.headercon);
var $contenthtml=$(htmls.popdes).text(this.options.popdes);
// $palert=$(htmls.palert);
this.$wraper.append($popheaer).append($contenthtml).append(ele);
this.$body.append(this.$popbg).append(this.$wraper);
// this.callback();
// console.log(this.callback);
},
okclick:function(){
//確認按鈕執行回撥函式
this.callback();
},
eventclick:function(){
var that=this;
that.$wraper.find("#btn-ok").on("click",function(){
that.remove();
that.okclick();
})
//只通過事件委託繫結一次,如果用on繫結,因為doument無法刪除,導致事件一直存在
/* $(document).one("click","#btn-ok",function(){
that.remove();
that.okclick();
});*/
that.$wraper.find(".btn-ok").on("click",function(){
that.remove();
that.okclick();
})
/* $(document).one("click",".btn-ok",function(){
that.remove();
that.okclick()
});*/
that.$wraper.find(".btn-cancel").on("click",function(){
that.remove();
})
},
alertpop:function(){
var $palert=$(htmls.palert);
this.createdom($palert);
this.eventclick();
},
confimpop:function(){
var $pconfim=$(htmls.pconfim);
this.createdom($pconfim);
this.eventclick();
},
remove:function(){
this.$wraper.empty().remove();
this.$popbg.empty().remove();
}
};
window.winpop=winpop;
}(window,jQuery));
總結:
我們都知道動態生成的dom元素,要給它繫結事件時,必須給予事件委託,通常我們委託給document.
//這裡不應該用on
$(document).one("click","#btn-ok",function(){
that.remove();
that.okclick();
});
但是我們委託給document時會出現一個問題,就是但你再次觸發按鈕時,原來繫結的事件不會銷燬。因為document不能刪除。那麼用one呢?我們只讓它執行一次。大家可以試下。
最終我使用了
that.$wraper.find(".btn-cancel").on("click",function(){
that.remove();
})
這樣就避免了事件不被銷燬。從而累計事件的bug.
相關推薦
簡單jquery元件開發
寫這篇文章主要是對自己以前學習jquery外掛的總結。現在元件化開發,以vuejs 、 reactjs 、angular 為代表的庫或框架讓web元件化開發逐漸推廣起來。下面是我用jquery寫的一款簡易的提示框元件。雖然沒有遵守mvc寫法,但也是很實用。
jquery元件開發
擴充套件jQuery外掛和方法的作用是非常強大的,它可以節省大量開發時間。這篇文章將概述jQuery外掛開發的基本知識,最佳做法和常見的陷阱。一、入門編寫一個jQuery外掛開始於給jQuery.fn加入新的功能屬性,此處新增的物件屬性的名稱就是你外掛的名稱:.程式碼如下
基於jquery的元件開發-mask
mask 一個常用的浮層元件,自己寫的,基於jquery,業務需求,樣式基於支付寶ui規範 mask.js 1.0版本 mask2.js 升級版本 效果截圖如下所示: 呼叫方法如
jQuery MiniUI 開發教程 樹形控制元件 建立樹:樹形結構(一)
[b]建立樹:樹形結構[/b][img]http://www.miniui.com/docs/api/images/tree.gif[/img]參考示例:[url=http://www.miniui.com/demo/tree/tree.html]Tree 樹形控制元件[/u
jQuery MiniUI 開發教程 表單控制元件 表單:控制元件尺寸調整(四)
[b]表單:控制元件尺寸調整[/b][img]http://www.miniui.com/docs/api/images/diysize.gif[/img]參考示例:[url=http://www.miniui.com/demo/form/form.html]表單:載入、儲存
4、jQuery面向物件之簡單的外掛開發
(function($){ /** * 這裡需要一些方法 * 查詢方法 * 修改的方法 * 刪除的方法 */ $.fn.GridPanel = { /** * 初始化事件
最簡單的jquery外掛開發示例
頁面三個DIV,一個按鈕。 點選按鈕後,三個DIV的高度調整為相同。 <!DOCTYPE html> <html> <head> <style> div { width: 40px;
創建一個簡單項目的開發步驟
ges 技術 nbsp .cn 簡單 一個 技術分享 mage logs 創建一個簡單項目的開發步驟
Eclipse簡單插件開發-啟動時間提示
dialog ace 開發 ext efault cname org pro int 1、新建Plug-in Project 不用改其他選項,直接點擊“Next”,然後點擊“Finish” 2、新建Sho
mac攻略(1) -- 簡單配置php開發環境
hub 其中 簡單 redirect 開發環境 nbsp 頁面 安裝mysql 是你 [http://www.cnblogs.com/redirect/p/6112154.html] 最簡單直接的方式還是使用 Mac 上自帶的 Apache 和 PHP。 1.啟動
Tomcat常見問題與簡單的Servlet開發
tomcat servlet javaweb j2ee javaee Tomcat常見問題當我們在Eclipse上開發web工程時,工程部署到Tomcat上了,所以修改文件的源碼時,Eclipse會自動將更改後的文件重新部署到Tomcat上,但是如果你做出修改的內容仍然在瀏覽器中看不到,那
asp.net mvc+jquery easyui開發實戰教程之網站後臺管理系統開發2-Model層建立
ack 前端 strong syn eee 名稱 lar led tegra 上篇(asp.net mvc+jquery easyui開發實戰教程之網站後臺管理系統開發1-準備工作)文章講解了開發過程中的準備工作,主要創建了項目數據庫及項目,本文主要講解項目M層的實現,M層
用腳手架簡單搭建vue開發環境
each one div imp routes out var history 掛載 完成後目錄展示: component文件裏放的是頁面,parts放的是入口文件main.js需要引入的js依賴。 事先安裝cnpm。然後用腳手架工具 vue-cli 來創建一個使用
JQuery.Gantt開發指南(轉)
導航 資源文件 實用工具 ati img nmon 開發 反序 public 說明 日前需要用到甘特圖,以下轉載內容源自網絡。 ? 概述 1.JQuery.Gantt是一個開源的基於JQuery庫的用於實現甘特圖效果的可擴展功能的JS組件庫。 ?前端頁面 o 資源引用
jQuery移動開發 jQuery Mobile Develop and Design 中文pdf掃描版
表單 cms ron pre com sig 作用 upa word 《jQuery移動開發》主要介紹使用jQuery Mobile框架創建移動網站的技巧和方法。全書首先介紹jQuery Mobile框架的基礎知識,以及HTML5在其中的作用;接著介紹UI組件的創建,包括對
妙味課堂Jquery從入門到插件開發到模擬視頻教程 Jquery實戰開發 Jquery UI
htm com http val targe 入門到 設計 pre 一課 <jQuery課程 初級到高級到模擬>├<第一課:jQuery初級>│ ├01 妙味雲課堂-jQuery簡介.mp4│ ├02 妙味雲課堂-jQuery設計思想之選擇元素.
webpack4從零配置搭建簡單的React16開發環境
scripts cif TBase ase ren 如果 輸出 init ntb 寫在最前 暑假想要學習React, 發現React官網上的沒有說明如何搭建React開發環境, 網上找的很多都是基於webpack3的, 或者直接使用腳手架, 所以趁著放假, 就稍微學了下we
SpringBoot2.x集成Apache Shiro並完成簡單的Case開發
token hash bat () 創建數據庫表 mbo form .get turn SpringBoot集成Apache Shiro環境快速搭建 在上文 Apache Shiro權限框架理論介紹 中,我們介紹了Apache Shiro的基礎理論知識。本文我們將在 Spr
93G通過項目學PHP+Ajax+jQuery網站開發技術 PHP+Ajax+jQuery項目實戰課程
錯誤處理 釋放 開發環境 tar 異常處理 年齡 常用事件 分頁 語法 ===============課程目錄===============<項目一:PHP網站搭建>├1.認識PHP.mp4├2.常用編輯工具.mp4├3.開發環境搭建.mp4├4.配置虛擬主機.
vue元件開發之導航選單元件封裝
執行結果: 呼叫程式碼部分: <template> <div id="app"> <menu-bar :list="list" @click="menuClick"></menu-bar> <!--fir