jquery筆記

jQuery獲取一組radio的值

如題所示,方法如下:
$("input[name='showCategory'][checked]").val()

一:普及JQuery知識

知識1:用JQuery寫插件時(shí)努溃,最核心的方法有如下兩個(gè):
$.extend(object) 可以理解為JQuery 添加一個(gè)靜態(tài)方法梧税。
$.fn.extend(object) 可以理解為JQuery實(shí)例添加一個(gè)方法称近。
基本的定義與調(diào)用:
/* $.extend 定義與調(diào)用

                    • * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
                      $.extend({ fun1: function () { alert("執(zhí)行方法一"); } });
                      $.fun1();
                      /
                      $.fn.extend 定義與調(diào)用
                      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
                      $.fn.extend({ fun2: function () { alert("執(zhí)行方法2"); } });
                      $(this).fun2();
                      //等同于
                      $.fn.fun3 = function () { alert("執(zhí)行方法三"); }
                      $(this).fun3();
                      知識2:jQuery(function () { }); 與 (function ($) { })(jQuery);的區(qū)別:
                      jQuery(function () { });
                      //相當(dāng)于
                      $(document).ready(function () { });
                      /
                      * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
                      (function ($) { })(jQuery);
                      //相當(dāng)于var fn = function ($) { };
                      fn(jQuery);
                      jQuery(function () { });是某個(gè)DOM元素加載完畢后執(zhí)行方法里的代碼哮塞。
                      (function ($) { })(jQuery); 定義了一個(gè)匿名函數(shù),其中jQuery代表這個(gè)匿名函數(shù)的實(shí)參衡未。通常用在JQuery插件開發(fā)中家凯,起到了定義插件的私有域的作用。
                      二:開發(fā)JQuery插件標(biāo)準(zhǔn)結(jié)構(gòu)
                        1送粱,定義作用域:定義一個(gè)JQuery插件掂之,首先要把這個(gè)插件的代碼放在一個(gè)不受外界干擾的地方。如果用專業(yè)些的話來說就是要為這個(gè)插件定義私有作用域板惑。外部的代碼不能直接訪問插件內(nèi)部的代碼。插件內(nèi)部的代碼不污染全局變量洽胶。在一定的作用上解耦了插件與運(yùn)行環(huán)境的依賴裆馒。說了這么多,那要怎樣定義一個(gè)插件的私有作用域翔横?
                      //step01 定義JQuery的作用域
                      (function ($) {
                      })(jQuery);
                      別小看了這個(gè)作用域梗搅,就像c#定義一個(gè)類的class關(guān)鍵字一樣重要。
                        2无切,為JQuery擴(kuò)展一個(gè)插件:當(dāng)定義好了JQuery的作用域后,最核心也是最迫切的一步就是為這個(gè)JQuery的實(shí)例添加一個(gè)擴(kuò)展方法掘托。首先我們?yōu)檫@個(gè)Jqury插件命名一個(gè)方法籍嘹,叫easySlider弯院,當(dāng)在調(diào)用這個(gè)插件的時(shí)候泪掀,我們可以通過options來給這個(gè)插件傳遞一些參數(shù)。具體的定義方法看如下代碼:
                      //step01 定義JQuery的作用域
                      (function ($) {
                      //step02 插件的擴(kuò)展方法名稱
                      $.fn.easySlider = function (options) {

      }
      })(jQuery);
      到現(xiàn)在為止辫红,其實(shí)一個(gè)最簡單的JQuery插件就已經(jīng)完成了祝辣。調(diào)用的時(shí)候可以("#domName").easySlider({}),或者(".domName").easySlider({})或者更多的方式來調(diào)用這個(gè)插件名惩。
        3孕荠,設(shè)置默認(rèn)值:定義一個(gè)JQuery插件,就像定義一個(gè).net控件弯予。一個(gè)完美的插件个曙,應(yīng)該是有比較靈活的屬性。我們來看這段代碼:<asp:TextBox ID="TextBox1" Width="20" Height="100" runat="server"></asp:TextBox>垦搬。 TextBox控件有Width和Height屬性,用戶在用TextBox時(shí)对雪,可以自由的設(shè)置控件的Height和Width米绕,也可以不設(shè)置值,因?yàn)榭丶陨碛心J(rèn)值蝶柿。那準(zhǔn)備開發(fā)一個(gè)JQuery插件時(shí)非驮,在用戶未指定屬性時(shí)雏赦,應(yīng)該有默認(rèn)值芙扎,在JQuery可以分兩步實(shí)現(xiàn)這樣的定義,看如下代碼step03-a填大,step03-b。
      //step01 定義JQuery的作用域
      (function ($) {
      //step03-a 插件的默認(rèn)值屬性var defaults = {
      prevId: 'prevBtn',
      prevText: 'Previous',
      nextId: 'nextBtn',
      nextText: 'Next'
      //…… };
      //step02 插件的擴(kuò)展方法名稱
      $.fn.easySlider = function (options) {
      //step03-b 合并用戶自定義屬性圈浇,默認(rèn)屬性var options = $.extend(defaults, options);
      }
      })(jQuery);
        做程序的人都喜歡創(chuàng)新靴寂,改改變量名呀,換一個(gè)行呀這些褐隆。當(dāng)看到用var defaults = {}來表示一個(gè)默認(rèn)屬性時(shí)剖踊,在自己寫JQuery插件時(shí)就想著與眾不同,所以用var default01 ={} 歇攻,var default02 ={}來表示默認(rèn)屬性了梆造。然后默認(rèn)屬性名五花八門,越來越糟澳窑。所以建議在寫JQuery插件時(shí),定義默認(rèn)屬性時(shí)鸡捐,都用defaults變量來代表默認(rèn)屬性麻裁,這樣的代碼更具有可讀性。
        有人看到這行代碼:var options = $.extend(defaults, options)色迂,皺起眉頭手销,表示不解。那我們先來看如下代碼:
      var obj01 = { name: "英文名:Sam Xiao", age: 29, girlfriend: { name: "Yang", age: 29} }
      var obj02 = { name: "中文名:XiaoJian", girlfriend: { name: "YY"} };

var a = $.extend(obj01, obj02);
var b = $.extend(true, obj01, obj02);
var c = $.extend({}, obj01, obj02);
var d = $.extend(true,{}, obj01, obj02);
把代碼拷貝到開發(fā)環(huán)境中诈悍,分別看一下a,b,c,d的值,就明白了var options = $.extend(defaults, options)的含義了侥钳。表示 options 去覆蓋了defaults的值,并把值賦給了options苦酱。
在插件環(huán)境中给猾,就表示用戶設(shè)置的值,覆蓋了插件的默認(rèn)值给僵;如果用戶沒有設(shè)置默認(rèn)值的屬性详拙,還是保留插件的默認(rèn)值。
  4蹲诀,支持JQuery選擇器:JQuery選擇器弃揽,是JQuery的一個(gè)優(yōu)秀特性,如果我們的插件寫來不支持JQuery選擇器矿微,確實(shí)是一個(gè)不小的遺憾涌矢。如了使自己的JQuery插件能支持多個(gè)選擇器,我們的代碼應(yīng)該這樣定義:
//step01 定義JQuery的作用域
(function ($) {
//step03-a 插件的默認(rèn)值屬性var defaults = {
prevId: 'prevBtn',
prevText: 'Previous',
nextId: 'nextBtn',
nextText: 'Next'
//…… };
//step02 插件的擴(kuò)展方法名稱
$.fn.easySlider = function (options) {
//step03-b 合并用戶自定義屬性塔次,默認(rèn)屬性var options = $.extend(defaults, options);
//step4 支持JQuery選擇器this.each(function () {

    });
}

})(jQuery);
5名秀,支持JQuery的鏈接調(diào)用:上邊的代碼看似完美了,其實(shí)也不那么完美匕得。到目前為止還不支持鏈接調(diào)用。為了能達(dá)到鏈接調(diào)用的效果必須要把循環(huán)的每個(gè)元素return
//step01 定義JQuery的作用域
(function ($) {
//step03-a 插件的默認(rèn)值屬性var defaults = {
prevId: 'prevBtn',
prevText: 'Previous',
nextId: 'nextBtn',
nextText: 'Next'
//…… };
//step02 插件的擴(kuò)展方法名稱
$.fn.easySlider = function (options) {
//step03-b 合并用戶自定義屬性裕照,默認(rèn)屬性var options = $.extend(defaults, options);
//step4 支持JQuery選擇器//step5 支持鏈?zhǔn)秸{(diào)用return this.each(function () {

    });
}

})(jQuery);
這樣的定義才能支持鏈接調(diào)用调塌。比如支持這樣的調(diào)用:$(".div").easySlider({prevId:"",prevText:""}).css({ "border-width": "1", "border-color": "red", "border-bottom-style": "dotted" });
6羔砾,插件里的方法:往往實(shí)現(xiàn)一個(gè)插件的功能需要大量的代碼,有可能上百行姜凄,上千行态秧,甚至上萬行。我們把這代碼結(jié)構(gòu)化申鱼,還得借助function。在第一點(diǎn)已經(jīng)說了淫半,在插件里定義的方法匣砖,外界不能直接調(diào)用,我在插件里定義的方法也沒有污染外界環(huán)境《匀耍現(xiàn)在就嘗試著怎么樣在插件里定義一些方法:
//step01 定義JQuery的作用域(function ($) {
//step03-a 插件的默認(rèn)值屬性var defaults = {
prevId: 'prevBtn',
prevText: 'Previous',
nextId: 'nextBtn',
nextText: 'Next'//…… };
//step06-a 在插件里定義方法var showLink = function (obj) {
$(obj).append(function () { return"(" + $(obj).attr("href") + ")" });
}

//step02 插件的擴(kuò)展方法名稱
$.fn.easySlider = function (options) {
    //step03-b 合并用戶自定義屬性拂共,默認(rèn)屬性var options = $.extend(defaults, options);
    //step4 支持JQuery選擇器
    //step5 支持鏈?zhǔn)秸{(diào)用returnthis.each(function () {
        //step06-b 在插件里調(diào)用方法
        showLink(this);
    });
}

})(jQuery);
步驟step06-a:在插件里定義了一個(gè)方法叫showLink(); 這個(gè)方法在插件外是不能直接調(diào)用的,有點(diǎn)像C#類里的一個(gè)私有方法猖闪,只能滿足插件內(nèi)部的使用肌厨。步驟step06-b演示了怎樣調(diào)用插件內(nèi)部的方法。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吵护,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子祥诽,更是在濱河造成了極大的恐慌瓮恭,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件维哈,死亡現(xiàn)場離奇詭異登澜,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)脑蠕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進(jìn)店門谴仙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人狞甚,你說我怎么就攤上這事⌒逞” “怎么了涩盾?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵春霍,是天一觀的道長。 經(jīng)常有香客問我址儒,道長,這世上最難降的妖魔是什么鸳慈? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任喧伞,我火速辦了婚禮,結(jié)果婚禮上翁逞,老公的妹妹穿的比我還像新娘。我一直安慰自己状植,他們只是感情好挪圾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般吩案。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上徘郭,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天残揉,我揣著相機(jī)與錄音,去河邊找鬼抱环。 笑死,一個(gè)胖子當(dāng)著我的面吹牛眶痰,可吹牛的內(nèi)容都是我干的梯啤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼七婴,長吁一口氣:“原來是場噩夢啊……” “哼察滑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起婚惫,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎艰管,沒想到半個(gè)月后蒋川,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年裂逐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了泣栈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片南片。...
    茶點(diǎn)故事閱讀 39,926評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡薪缆,死狀恐怖伞广,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤灾票,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響啥纸,放射性物質(zhì)發(fā)生泄漏婴氮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一庭惜、第九天 我趴在偏房一處隱蔽的房頂上張望护赊。 院中可真熱鬧砾跃,春花似錦、人聲如沸判耕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽志鞍。三九已至,卻和暖如春固棚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厂汗。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工娶桦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人衷畦。 一個(gè)月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓知牌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親菩混。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關(guān)注...
    程序員poetry閱讀 16,645評論 18 503
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計(jì)者無需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級特性帖烘。 1....
    LaBaby_閱讀 1,335評論 0 2
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式秘症。設(shè)計(jì)者無需花費(fèi)時(shí)間糾纏JS復(fù)雜的高級特性。 1....
    LaBaby_閱讀 1,174評論 0 1
  • 選擇器選擇器是jQuery的核心役耕。 事件 動畫 擴(kuò)展
    wyude閱讀 475評論 0 1
  • jquery插件的開發(fā)包括兩種: 一種是類級別的插件開發(fā)框全,即給jquery添加新的全局函數(shù)干签,相當(dāng)于給jquery類...
    小豆soybean閱讀 696評論 0 4