jYD框架使用

来源:http://www.cnblogs.com/isaboy/archive/2017/08/30/jYD.html
-Advertisement-
Play Games

jYD是一個類似於jQuery的框架,包含常用的功能:如Dom操作,事件,樣式,表單和Ajax交互。 ...


  jQuery是一個非常好的框架,涉及的內容比較多,隨著現在瀏覽器的發展,原生JS的功能越來越強大,jQuery包含內容很多,但是常用的功能無非涉及到Dom操作,事件,樣式,表單和Ajax交互。引入那麼大的庫,感覺很多又沒有用到,至此萌發出自己構建一個JS輕量級庫的想法,此庫只實現常用的需求點,同時對於IE等老版本瀏覽器不相容,讓此JS能卸下歷史負擔,立足當下。代碼大約14KB,已經上傳github地址: https://github.com/JackWangCUMT/jYD,
最後,限於個人精力有限,此框架難免有不足之處,也歡迎發送意見到郵箱進行反饋。

 1 命名

 一個JS框架,首先需要起一個名字,我思考再三,最終決定用我給即將出生的孩子起的名字允迪(YUNDI)來命名,取首字母,即jYD. 允迪取自 南朝·梁·任昉《為蕭揚州薦薦士表》:“竊見秘書丞琅玡臣王暕,年二十一,字思晦,七葉重光,海內冠冕。神清氣茂,允迪中和。”,允迪有誠實遵循的意思。

 2 框架構建

 為了方便後續的分模塊開發,採用如下JS模式進行框架構建,此模塊有私有變數和函數,有公有函數,m.方法即可以外部訪問。

 1 //(C) 2017 wangming  all rights reserved
 2 //email:[email protected]
 3 var jYD = (function(m) {
 4          //private
 5          var _ver = 1.0;
 6          var _toString = Object.prototype.toString;
 7          _log = function(msg) {
 8              console.log(msg);
 9          }
10          //public
11          m.log = function(msg) {
12             _log(msg);
13          }
14          return m;
15 }(jYD || {}));

  事件綁定,採用如下的代碼段進行實現:

 1 function _on(obj, type, handle) {
 2              try { // Chrome、FireFox、Opera、Safari、IE9.0+
 3                  obj.addEventListener(type, handle, false);
 4              } catch (e) {
 5                  try { // IE8.0-
 6                      obj.attachEvent('on' + type, handle);
 7                  } catch (e) { // 早期瀏覽器
 8                      obj['on' + type] = handle;
 9                  }
10              }
11              var events = obj['the' + type];
12              if (!events) {
13                  events = obj['the' + type] = [];
14                  events.push(handle);
15              }
16 }

  方法連綴的實現,可以在方法後return this來實現:

 1 m.first = function() {
 2              for (var i = 0, e; e = _ele[i++];) {
 3                  if (e.nodeType == 1)
 4                      _ele = e;
 5              }
 6              return this;
 7 };
 8  m.last = function() {
 9              var len = _ele.length;
10              for (var i = len - 1, e; e = _ele[i--];) {
11                  if (e.nodeType == 1)
12                      _ele = e;
13              }
14              return this;
15 };

 

  3 jYD使用

1 <script src="jYD.js"></script> //引入js

Dom

jYD.$("#txt2").ele().value
jYD.$("#frm input").ele()
jYD.$("input:checked").ele()[0].value
jYD.$("input[type=text]").ele()[0].value
jYD.$(".classname").ele()[0].value
jYD.$(".classname").first().ele()

Form

var _json = {
    "name3": "name3",
    "name6": "name6",
    "name7": "name7",
    "name2": "2017-08-08",
    "name1": "audi",
    "ajdsfa": false,
    "Fruit": "桃子",
    "fruit1": "香蕉",
    "hobby": ["音樂", "游泳"],
};
jYD.$("#frm").bindJson(_json)
jYD.$("#frm").serialize() //name3=name3&name6=name6&name7=name7&name2=2017-08-08
jYD.$("#frm").reset()
jYD.$("input").disabled()
jYD.$("select").disabled()
jYD.$("button").disabled()
jYD.$("input").enable()
jYD.$("select").enable()
jYD.$("button").enable()

Event

jYD.$("#btnok").off("click").on("click", function(e) {
      console.log(decodeURIComponent(jYD.$("#frm").serialize()));
});
//custom Event
var sender = jYD.$("#cediv").ele();
var target = jYD.$("#btnce").ele();
jYD.createCE(sender, "divbtnclick", {
     detail: {
            tag: sender,
             msg: "hello"
      }

}, target, "click");
 //冒泡
jYD.$("#cediv").on("divbtnclick", function(e) {
      console.log(e);
});

CSS

jYD.$(".clss").addClass("red").removeClass("clss")
jYD.$("#txt2").css({"backgroundColor":"#eee"});

Ajax

 jYD.post('/api/api3.ashx')
     .params(jYD.$("#frm").serialize() + "&table=22")
     .success(function (data) {
           console.log(data);
     }).error(function (data) {
           console.log("eror" + data);
     })
     .send();

Other

jYD.is.Number(99)
jYD.isElement(document.getElementById("frm"))
jYD.is.Array([])

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

-Advertisement-
Play Games
更多相關文章
  • 1、html標記 JS 1、獲取 li屬性 data-text的值用 ,隔開 輸出結果;111,222,333 2、編輯的時候初始化ul的li項 ...
  • 自動化的開發流程 在HTML5游戲開發或者說在Web客戶端開發中,對項目代碼進行修改之後,一般來說,需要手動刷新瀏覽器來查看代碼修改後運行結果。這種手動的方式費時費力,降低了開發效率。另外,如果我們使用瞭如TypeScript這類需要通過轉換器把代碼轉換成瀏覽器可識別的JavaScript代碼的語言 ...
  • 第三部分:流程式控制制語句 JavaScript代碼是書寫位置: JavaScript代碼應該寫在<script type=”text/javascript”></script>這一對標記中。 或者作為外部引用<script src="JavaScript代碼路徑"></script> JavaScri ...
  • 最近幾年隨著響應式佈局的發展,一次開發多次使用,自適應屏幕的響應式網站的需求越來越多。但是怎樣使得網站能自適應屏幕呢?這裡就需要提到一個css3裡面新增的技術了-media媒體查詢器。 那麼什麼是media媒體查詢器呢? Media媒體查詢器是CSS3新增的一個可以檢測打開網站的終端的屏幕解析度的技 ...
  • 以前我也是老搞不懂a++和++a的區別, 後來看了很多資料, 終於總結出來一條規律, 小白專用! 看完這個例子就懂了: 例1:$a = 8, 求 ++a + a++ - --a + a-- + ++a得多少? 舊值: 8 9 10 9 8 ++a + a++ - --a + a-- + ++a 新值 ...
  • 普及:瀏覽器的相容性問題,往往是個別瀏覽器(沒錯,就是那個與眾不同的瀏覽器)對於一些標準的定義不一致導致的。俗話說:沒有IE就沒有傷害。 貼士:內容都是自己總結的,不免會出現錯誤或者bug,歡迎更正和補充,本帖也會不斷更新。 Normalize.css 不同瀏覽器的預設樣式存在差異,可以使用 Nor ...
  • 最終效果圖: ...
  • ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...