国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

簡易jquery組件開發

jollywing / 3043人閱讀

摘要:現在組件化開發,以為代表的庫或框架讓組件化開發逐漸推廣起來。下面是我用寫的一款簡易的提示框組件。效果有時用戶執行某個操作時,需要彈出提示框讓用戶確定執行某個回調函數,這樣就有效的避免用戶因操作失誤執行不該執行的操作。從而累計事件的源碼

寫這篇文章主要是對自己以前學習jquery插件的總結。現在組件化開發,以vuejs 、 reactjs 、angular 為代表的庫或框架讓web組件化開發逐漸推廣起來。下面是我用jquery寫的一款簡易的提示框組件。雖然沒有遵守mvc寫法,但也是很實用。

效果:

有時用戶執行某個操作時,需要彈出提示框讓用戶確定執行某個回調函數,這樣就有效的避免用戶因操作失誤執行不該執行的操作。

代碼
/**
 * Created by helti on 2017/2/16 0016.
 */

!(function(window,$,undefined){

    var htmls={
        "popbg":"
", "pwraper":"
", "popheader":"
", "popdes":"

", "palert":"
", "pconfim":"
" }; 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.

github源碼

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81556.html

相關文章

  • 前端經典文章

    摘要:上周末看這篇文章時,偶有靈光,所以,分享出來給大家一起看看前端面試四月二十家前端面試題分享請各位讀者添加一下作者的微信公眾號,以后有新的文章,將在微信公眾號直接推送給各位,非常感謝。 前端切圖神器 avocode 有了這個神器,切圖再也腰不酸,腿不疼了。 這一次,徹底弄懂 JavaScript 執行機制 本文的目的就是要保證你徹底弄懂javascript的執行機制,如果讀完本文還不懂,...

    lowett 評論0 收藏0
  • 從頭實現一個簡易版React(二)

    摘要:寫在開頭從頭實現一個簡易版一地址上一節,我們詳細介紹了實現一個簡易的思路以及整體的結構,但是對于渲染和更新的原理,卻還沒有提及,因此,本節我們將重點放在的渲染上。 寫在開頭 從頭實現一個簡易版React(一)地址:https://segmentfault.com/a/11...上一節,我們詳細介紹了實現一個簡易React的思路以及整體的結構,但是對于渲染和更新的原理,卻還沒有提及,因此...

    vvpvvp 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優化頁面加載速度的方法隨筆分類中個最重要的技術點常用整理網頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數組函數數據訪問性能優化方案實現的大排序算法一怪對象常用方法函數收集數組的操作面向對象和原型繼承中關鍵詞的優雅解釋淺談系列 H5系列 10種優化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術點 常用meta整理 網頁性能管理詳解 HTML5 ...

    jsbintask 評論0 收藏0
  • 前端文檔收集

    摘要:系列種優化頁面加載速度的方法隨筆分類中個最重要的技術點常用整理網頁性能管理詳解離線緩存簡介系列編寫高性能有趣的原生數組函數數據訪問性能優化方案實現的大排序算法一怪對象常用方法函數收集數組的操作面向對象和原型繼承中關鍵詞的優雅解釋淺談系列 H5系列 10種優化頁面加載速度的方法 隨筆分類 - HTML5 HTML5中40個最重要的技術點 常用meta整理 網頁性能管理詳解 HTML5 ...

    muddyway 評論0 收藏0

發表評論

0條評論

jollywing

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<