bootstrap源码常用的jquery函数

parent()函数

场景:返回匹配元素的父元素集合

html代码:
<div><p>11111</p></div><div class="parent"><p>22222222</p></div>

js代码:
$("p").parent()  //获取到所有p标签的父元素集合
$("p").parent('.parent')  //获取到只带有.parent样式父元素集合

parent()函数返回结果如图所示:


is()函数

场景:根据选择器检测匹配元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true。
场景1:

html代码:
<form><input class="btn btn-default" type="button" value="Input"></form>
<!-- <div><input class="btn btn-default" type="button" value="Input"></div> -->

js代码:
console.log($(".btn").is('input'));
console.log($(".btn").parent().is("form"));

结果:
true
true

场景2:

html代码:
<!-- <form><input class="btn btn-default" type="button" value="Input"></form> -->
<div><input class="btn btn-default" type="button" value="Input"></div>

js代码:
console.log($(".btn").is('input'));
console.log($(".btn").parent().is("form"));

结果:
true
false

场景3:

html代码:
<form><input class="btn btn-default" type="button" value="Input"></form>
<div><input class="btn btn-default" type="button" value="Input"></div>

js代码:
console.log($(".btn").is('input'));
console.log($(".btn").parent().is("form"));

结果:
true
true

data()函数

场景:
1、在元素上存放或读取数据
2、根据HTML5规范中,可以读取预存的data-[key]值HTML data-* 属性

案例1:在元素上存放或读取数据
html代码:
<div></div>

js代码:
console.log($("div").data("key1"));  // undefined
$("div").data("key1", "hello world~");  
console.log($("div").data("key1"));  // hello world~
案例2:
html代码:读取预存的data-[key]值
<button type="button" id="myButton" data-loading-text="Loading..." data-aaaaa-text="111111"> Loading state </button>

js代码:
//获取data-loading-text里Loading...这个值
console.log($("#myButton").data("loading-text"));  
//结果:Loading...

//不带参数的$("#myButton").data();,则表示一次性将所有以data-开头的参数都收集起来
console.log($("#myButton").data());
//结果:{loadingText: "Loading...", aaaaaText: 111111}

Bootstrap中的很多JS插件都是利用了这个特性,在HTML元素上定义了一些必要的参数,比如是否开启键盘事件等等。

html()函数

1、获取第一个匹配元素的html内容
2、用于设定HTML内容的值
案例如下:

html代码:
<div><p>22222222</p></div><div><p>11111</p></div>

js代码:
console.log($("p").html());  
//只显示第一个p标签内容
//结果:22222222
$("p").html("Hello worl~");
//页面两个p标签内容均修改,显示如下
//Hello worl~
//Hello worl~

val()函数

1、获得匹配元素的当前值
2、设置元素的当前值
案例如下:

html代码:
<input class="btn btn-default" type="button" value="Input">

js代码:
console.log($("input").val()); //Input
$("input").val("hello world!"); //按钮显示成hello world!

addClass()函数

为所有匹配的元素添加指定的类名。
案例如下:

html代码:
<div><p>11111</p></div><div><p>22222222</p></div>

js代码:
$("div").addClass("selected"); 

html结果:
<div class="selected"><p>11111</p></div><div class="selected"><p>22222222</p></div>

removeClass()函数

为所有匹配的元素删除指定的类名。
案例如下:

html代码:
<div class="selected"><p>11111</p></div><div class="selected"><p>22222222</p></div>

js代码:
$("div").removeClass("selected");

//html结果:
<div class=""><p>11111</p></div><div class=""><p>22222222</p></div>

toggleClass()函数

1、切换类的状态,如果所选元素存在指定的类就删除,如果所选元素不存在指定的类就添加
2、用于决定所选元素是否包含该类
案例如下:

html代码:
<div><p>11111</p></div><div><p>22222222</p></div>

js代码:
$("div").toggleClass("selected");

html结果:
<div class="selected"><p>11111</p></div><div class="selected"><p>22222222</p></div>
html代码:
<div class="selected"><p>11111</p></div><div class="selected">

js代码:
$("div").toggleClass("selected");

html结果:
<div><p>11111</p></div><div><p>22222222</p></div>
$("div").toggleClass("selected",true); //无论是否有selected,有则不处理,无则添加
html结果:
<div class="selected"><p>11111</p></div><div class="selected"><p>22222222</p></div>

$("div").toggleClass("selected",false); //无论是否有selected,有则删除,无则不处理
html结果:
<div><p>11111</p></div><div><p>22222222</p></div>

attr() 函数

1、获取第一个匹配元素的属性值
2、用于设定所有匹配元素的属性值
案例如下:

html代码:
<div><p class="p1">11111</p></div><div><p class="p2">22222222</p></div>

js代码:
console.log($("p").attr("class"));  //p1 [第一个匹配元素的属性值]
$("p").attr("class","p111111111")
html结果:
<div><p class="p111111111">11111</p></div><div><p class="p111111111">22222222</p></div>

removeAttr函数

删除所有匹配元素的指定的属性值
案例如下:

html代码:
<div><p class="p111111111">11111</p></div><div><p class="p111111111">22222222</p></div>
js代码:
$("p").removeAttr("class","p111111111")
html结果
<div><p>11111</p></div><div><p>22222222</p></div>

prop() 函数

和attr() 函数区别在于:设置或者获取元素boolean类型的属性值
1、获取第一个匹配元素的属性值
2、用于设定所有匹配元素的属性值

html代码:
<input  type="button" value="Input">
<input  type="button" value="Input">

js代码:
console.log($("input[type='button']").prop("disabled"));
 //false[第一个匹配元素的属性值]
$("input[type='button']").prop("disabled",true)
html结果
<input type="button" value="Input" disabled="">
<input type="button" value="Input" disabled="">

on函数

在选择的元素上监听事件
案例如下:

html代码:
<div>
    <input  type="button" value="Input">
    <a type="button"  href="#">Link</a>
    <button type="submit">Button</button>
</div>

js代码:
//第一种常见用法,在所选择的元素上直接监听事件
$("div").on("click", function(){
    alert("hello world");
});

//第二种bootstrape框架用法,在所选择的元素上监听事件,根据事件的冒泡规则过滤触发事件的选择器元素的后代元素
$(document).on("click", '[type="button"]', function(){
        alert("hello world");
});
//此案例中,当点击<button type="submit">Button</button>按钮的时候不会触发点击事件,原因是因为不满足子元素过滤规则

off函数

在选择的元素上取消监听事件
案例如下

html代码:
<p>1111111</p>
<p>2222222</p>
<p>3333333</p>

js代码:
//在p标签上监听点击事件,当点击p标签的时候会弹出alert数据
$("p").on("click", function(){
        alert("hello world");
    });

//在p标签上取消点击事件,当点击p标签的时候不会触发之前监听的事件
$("p").off("click");

补充说明:
Bootstrap框架,它对jQuery的on和off的使用稍有不同,例如如下案例:

$(document).on('click.bs.td.data-api','td',function (e){};

上述的on在使用时选择器变成了document。它的好处是只在document上绑定一个单击事件,利用冒泡的机制,在单击的时候检查是否是td元素,如果是才处理。如果我们把td作为选择器,一个页面有多少td元素就会绑定多少个click事件,这样性能会大大降低。

trigger函数

根据选择器选择的所有元素触发指定的事件类型
案例如下:

html代码:
<p>1111111</p>
<p>2222222</p>
<p>3333333</p>

js代码:
//定义click事件
$("p").on("click", function(){
        alert("hello");
});
//不需要鼠标点击调用click事件,用如下代码即可触发所有p元素的click事件,会导致页面弹出3次alert
$("p").trigger("click");

trigger函数传参的写法
$("p").on("click", function(e,param1,param2){
        alert(param1 +"-"+ param2);
    });
// 通过数组的方式向on监听的事件传参
$("p").trigger("click",["11111","2222222"]);

each函数

jquery循环遍历函数
案例如下:

html代码:
<p>aaaaaaaaa</p>
 <p>bbbbbbbbb</p>
 <p>ccccccccc</p>

js代码:
$("p").each(function(i){
        $(this).html("p"+i)
});

html最终渲染结果:
<p>p0</p>
<p>p1</p>
<p>p2</p>

解释:
选择器选择所有的p标签,each函数循环遍历每个p标签进行处理,i变量表示当前是第几个选中的p标签,函数内部的this表示当前选中的p标签,通过 $(this)就可以把当前p标签变成jquery对象,然后就可以调用jquery方法进行使用了。

$.extend()函数

用一个或多个其他对象来扩展第一个对象,返回被扩展的第一个对象。
案例如下:

var defaultObj = { loadingText: 'loading...' };
var options = { loadingText: '加载中...', name: "bar" };
var data = $.extend({}, defaultObj, options)
console.log(defaultObj);
console.log(data);
//这种情况不会修改defaultObj 的数据,因为它不是第一个被扩展的对象
// {loadingText: "loading..."}
//{loadingText: "加载中...", name: "bar"}

var data = $.extend(defaultObj, options)
console.log(defaultObj);
console.log(data);
//{loadingText: "加载中...", name: "bar"}
//{loadingText: "加载中...", name: "bar"}
//这种情况会修改defaultObj 的数据,因为它位于第一个参数
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容

  • 今天刷新闻,看到几张图片:重庆一家游乐场门前,一个年轻父亲用一根塑料绳牵着一个五六岁的男孩。 塑料绳的两端是环扣,...
    彼得猫乌金阅读 460评论 0 3
  • 姓名:李丹丹 公司:山东万洁环保科技有限公司 组别:第373期 利他一组 【日精进打卡第285天】 【知~学习】 ...
    小雨淅淅373阅读 168评论 0 0
  • 我是96年参加高考的。 以前的高考是7月的7/8/9三天。6日参观考场。 我是在县中借读的,就是学籍在乡下的一...
    洛村阅读 219评论 1 2
  • 凤姐协理宁国府 01 秦可卿去后,贾珍的媳妇尤氏犯了旧疾,卧床不起。贾珍里外忙,尤其是内室诰命往来,无法打理。书中...
    结雨堂李宏宇阅读 394评论 0 13
  • 10.5工作一天,下班后去护肤放松得睡着。然后一点点真的又让我失眠了。不喝奶茶继续打卡,第一天~
    Oh嘘阅读 222评论 0 0