传送门

JQuery 入口函数

// jquery入口函数可以执行多次
$(document).ready(function(){console.log(1);
})// 简写$(function(){console.log(1);})

JQuery 选择器

<div class="box-1">div</div>
<span class="txt-2">span</span>
<h3 id="demo">h3</h3>
<button>button</button>
<input type="text" value="input">
<ul><li>1</li><li>2</li>
</ul>
<input type="checkbox" checked>
<input type="checkbox">
<script>$(function() {// 页面上的标签// DOM: 文档对象模型(DOM 是控制页面元素的一套标准)// dom对象:页面上的标签(元素)// 选择器(获取页面标签的一种方式)// 调用 $函数或者 jQuery函数,传递的是选择器的标记// 返回 jquery 对象var o1 = $(".box-1") console.log(o1); // o1 是 jQuery 对象console.log(typeof o1);console.log($("#demo"))console.log($("button"));console.log($("input[type='text']"))console.log($("ul > li:nth-child(1)"))console.log($("input[type='checkbox']:checked"))})
</script>
<div class="wrapper"><div class="nav"><ul><li>颜色</li><li>颜色</li><li>颜色</li><li class="active">黄色</li><li>紫色</li><li>粉色</li><li>淡蓝色</li><li>黄绿色</li></ul></div>
</div>
<script>$(function () {// 选中 .nav 标签$(".nav").css("background", "deepskyblue");// 选中 .nav 标签的父元素$(".nav").parent().css("height", "120px");// 选中 .nav 标签的子元素$(".nav").children("ul").css("backgroundColor", "#ccc");//选中 .nav 标签下所有的li元素$(".nav").find("li").css("borderRadius", "20px");// 选中 .active标签的上一个元素$(".active").prev().css("backgroundColor", "blue");// 选中 .active标签的下一个元素$(".active").next().css("backgroundColor", "purple");// 选中 .active以外的所有 li 元素$(".active").siblings("li").css("backgroundColor", "#fff");// 选中 ul li 列表中第一个 li 标签$("ul li").first().css("backgroundColor", "red");// 选中 ul li 列表中第一个 li 标签$("ul li").last().css("backgroundColor", "yellowgreen");// 通过索引值选中元素$("ul li").eq(1).css("background", "green");$("ul li").eq(2).css("background", "blue");// 选中倒数第二个livar len = $("ul li").length;$("ul li").eq(len - 2).css("backgroundColor", "lightblue");$("ul li").eq(len - 3).css("backgroundColor", "blue");});
</script>

JQuery 设置元素的样式

<div class="box-1"></div>
<script>$(function() {// 方法一$(".box-1").css("backgroundColor","red");// 方法二var option = {backgroundColor: "green",borderRadius: "50px"}$(".box-1").css(option);})
</script>

JQuery 控制元素的类名

<div>1</div>
<div>2</div>
<div>3</div>
<script>// 设置元素的类名 addClass$("div").eq(0).addClass("bg-red");// 移除元素的类名 removeClass$("div").eq(0).removeClass("bg-red");// 切换类名 toggleClass(存在就移除 不存在就添加)$("div").eq(0).toggleClass("bg-red");$("div").eq(0).toggleClass("bg-red");// 判断是否包含该类名 hasClassvar flag = $("div").eq(0).hasClass("bg-red");  console.log(flag); // true 表示存在该类名; false表示不存在该类名
</script>

JQuery 控制元素的文本

<div><!-- 双标签 --><span>天空突然下了点雨</span>
</div>
<div class="form-1"><!-- 单标签 --><input type="text" value="现在天气又好转了">
</div>
<script>// 获取值var v1 = $(".text-1").html();console.log(v1); //   <!-- 双标签 --><span>天空突然下了点雨</span>  原样输出// 获取值var v2 = $(".text-2").text();console.log(v2); // 天气突然下了点雨 去除掉标签 原样输出// 获取表单值var v3 = $(".form-1 input").val();console.log(v3);// 设置元素的纯文本$(".text-1").text("<b>天空突然下了点雨</b>");// 设置文本内容$(".form-1 input").val("输入...");
</script>

JQuery 控制标签的属性

<div class="">1</div>
<div id="">2</div>
<img src="" alt="3">
<a href="">4</a>
<script>// 设置标签的属性$("div").eq(0).attr("class","box");// 获取标签的属性var v1 =  $("div").eq(0).attr("class"); // 删除标签的属性$('img').removeAttr("src")
</script>

JQuery 表单标签的属性控制

<div><input type="button" value="按钮" disabled><input type="button" value="按钮">
</div>
<div><input type="checkbox" checked><input type="checkbox" >
</div>
<script>var v1 = $("input[type='button']").eq(0).prop("disabled");var v2 = $("input[type='button']").eq(1).prop("disabled");console.log(v1);// trueconsole.log(v2);// falsevar v3 = $("input[type='checkbox']").eq(0).prop("checked");var v4 = $("input[type='checkbox']").eq(1).prop("checked");console.log(v3);// trueconsole.log(v4);// false // 选择复选框标签 设置勾选状态$("input[type='checkbox']").eq(0).prop("checked",false);
</script>

JQuery 对象和 DOM 对象

<div></div>
<script>var $dom = $("div");console.log( $dom );// 转成 dom 对象var div1 = $dom[0];var div2 = $dom.get(0); // 转成 jQuery 对象var ele = document.querySelector("div");var $ele =  $(ele);</script>

JQuery 操作 DOM

  • 给容器中添加子元素
<div id="container"><div class="demo"></div>
</div>
<script>$(function() {// 添加元素 往容器标签尾端(索引值为length-1)添加元素 滚动加载$('container').append("<div class='box1'>1</div>");// 添加元素 往容器标签首位(索引值为0)添加元素 下拉刷新$('container').prepend("<div class='box'>4</div>");})
</script>
  • 给容器中添加子元素
<div class="box-1"><!-- 目标元素 --><div></div>
</div>
<div class="box-2"></div>
<script>
// 把目标元素移动至指定的容器标签
$(function() {$(".box-1 > div").appendTo('.box-2');
})
</script>
  • 给指定元素前后添加元素
<div class="container"><div class="demo"></div>
</div>
<script>$(function() {// 在元素前添加元素$('demo').before('<h2>Hello World</h2>');// 在元素后添加元素$('demo').after('<h2>Hello world</h2>');})
</script>
  • 给指定元素前后添加元素
<div class="container"><div class="demo"></div>
</div>
<div class='box'></div>
<script>$(function() {// 将 .box 元素添加到 .demo元素的后面$('.box').insertAfter('.container .demo');$('.box').insertBefore('.container .demo');})
</script>
  • 删除元素
<ul><li class="list-1">A</li><li class="list-2">B</li><li class="list-3">C</li>
</ul>
<script>$(function() {// 删除所有 li 元素$('ul li').remove();// 删除指定元素$('ul li').eq(0).remove();$('.list-1').remove();// 清空元素$('ul').html("");$('ul').empty();})
</script>
  • 克隆元素
<div class='container'><ul><li>列表1</li><li>列表2</li><li>列表3</li></ul>
</div>
<script>$(function() {var $ele = $('.container').clone();$('body').append($ele);})
</script>

JQuery 事件

  • 方法一:$(selector).事件类型(function(){})
<button class="btn-1">点击按钮1</button>
<button class="btn-2">点击按钮2</button>
<button class="btn-3">点击按钮3</button>
<script>$('.btn-1').click(function() {console.log(this);// 把 dom 对象转成 jquery 对象$(this).css('backgroundColor', 'yellow')})// 其他事件监听也是类似 (jquery对象.监听事件的类型)
</script>
  • 方法二:$(selector).bind(事件类型,function(){})
<button class='btn'>按钮</button>
<script>// 一个监听器可以监听多种事件类型$('.btn').bind('click mouseenter', function(event) {var count = 0;// 获取事件的类型  var type = event.handleObj.origType;if(type === "click") {count++if(count == 5) {// 删除点击监听器$('.btn').unbind("click");// 删除所有事件类型的监听器// $(".btn").unbind(); }}})
</script>
  • 方法三:事件委托 delegate()
<ul><li data-type="a">张三</li><li data-type="b" class="item-2">李四</li><li data-type="c">赵云</li><li data-type="e">孙六</li>
</ul>
<script>// 区分父容器中的子元素$('ul').delegate("li[data-type='b']", 'click', function(e) {console.log(e.target)})$('ul').delegate(".item-2", 'click', function(e) {console.log(e.target)})$('ul').delegate("li", 'click', function(e) {if(e.target.dataset.type == 'b') {console.log("lisi")}})// 绑定多个事件$('ul').delegate(".item-2","click mouseenter",function(event) {if(event.handleObj.origType == "click") {console.log("click")}else if(event.handleObj.origType == "mouseenter") {console.log("mouseenter")}})// 解除点击事件$('ul').undelegate("click");// 解除所有事件$('ul').undelegate();
</script>
  • 方法四:事件委托 on() (jQuery 推荐)
<div class="container"><button>按钮1</button><button>按钮2</button><button>按钮3</button><button>按钮4</button>
</div>
<script>// 绑定事件$('button').on("click", function() {console.log(e);})// 事件委托$('.container').on("click", "button", function(e) {console.log($(this))})// 绑定多个事件$('.container').on('click mouseenter', "button", function(e) {if(e.handleObj.origType == "click"){console.log('click')}})// 取消点击事件绑定$('.container').off("click")// 取消所有事件绑定$('.container').off();
</script>

显示和隐藏元素

  • 方式一:简单
<button class='btn-show'>显示</button>
<button class='btn-hide'>隐藏</button>
<div class='box'></div>
<script>// 元素隐藏$(".box").hide();// 元素显示$(".box").show();// 显示隐藏切换$(".box").toggle();// 方式一:执行动画,通过改变元素的宽度和高度等显示和隐藏元素$(".btn-show").click(function() {$(".box").show(1000);// $(".box").hide(1000);})// 方式二:fast / slow$(".btn-show").click(function(){$(".box").show("fast"); // 显示// $(".box").hide("slow"); // 隐藏  }) // 方式三:动画结束后,可以执行回调函数$(".btn-show").click(function() {$(".box").show(1000, function() {console.log("show")})})
</script>
  • 方式二:下拉显示和收起隐藏
<button class='btn-show'>下拉显示</button>
<button class='btnl-hide'>收起隐藏</button>
<div class='box'>hello world</div>
<script>// 方式一$('.box').slideUp(); // 隐藏元素$('.box').slideDown(); // 显示元素$('.box').slideToggle(); // 切换// 方式二$('.box').slideDown(1000);// 方式三$('.box').slideDown(1000, function() {console.log("显示元素")})
</script>
  • 方式三:淡入显示和淡出隐藏
<button class="btn-show">淡入显示</button>
<button class="btn-hide">淡出隐藏</button>
<div class="box">hello world</div>
<script>// 方式一$('.box').fadeOut(); // 隐藏元素$('.box').fadeIn(); // 显示元素$('.box').fadeToggle(); // 切换// 方式二$('.btn-show').click(function() {$('.box').fadeIn(500)})// 方式三$('.btn-show').click(function() {$('.box').fadeIn(500, function() {console.log("淡入")})})
</script>

动画

  • 动画开始
<button class="btn-animate">执行动画</button>
<div class="box"></div>
<script>/*参数: 1、样式对象 2、毫秒值/英文词汇 3、回调函数*/$(".btn-animate").animate({width: "100px",borderRadius: "50px"}, 1000, function() {$('.box').css("background", "blue")})
</script>
  • 动画结束
$("#start").click(function() {$('.box').animate({height:50}, 3000).animate({width: 300}, 3000).animate({marginLeft: 150}, 3000)
})
$("#pause").click(function() {// 一个参数$('.box').stop(); // 立即停止当前动画,继续执行后续动画$('.box').stop(true); // 立即停止当前的动画,不执行后续的动画$('.box').stop(false); // 立即停止当前动画,继续执行后续动画// 两个参数$('.box').stop(true, false); // 立即停止当前的动画,不执行后续的动画$(".box").stop(true,true); // 立即完成当前的动画,停止执行后续的动画$(".box").stop(false,true); // 立即完成当前的动画,会执行后续的动画$(".box").stop(false,false);  //立即停止当前的动画,会执行后续的动画
})

总结:参数不写默认为 false

后续动画 取绝于 第一个参数为 false则执行,true 则结束

当前动画 取绝于 第二个参数为false则停止,true 则完成

  • 动画队列
<button class="btn-start">开始</button>
<button class="btn-next">继续执行(下一个动画)</button>
<button class="btn-pause">停止</button>
<div><div class="red"></div><div class="green"></div>
</div>
<script>$(function() {// 定义动画队列var arr = [function() {$(.red).animate({marginLeft: 100}, 1000)},function() {$(.green).animate({marginLeft: 100}, 1000)},  ]// 绑定事件$(".btn-start").click(function() {$("body").queue("fx", arr)})$(".btn-next").click(function() {// 执行下一个动画$("body").dequeue("fx")})$(".btn-pause").click(function() {// 清除动画队列$("body").clearQueue("fx");})}) // 如果以上方法不符合您的业务逻辑,那就直接根据数组索引值执行动画// var f1 = arr[0]// f1()
</script>

获取元素下标

  • 并列关系
<div><button>按钮</button><button>按钮</button><button>按钮</button><button>按钮</button><button>按钮</button><button>按钮</button>
</div>
<script>$('div').on('click', "button", function() {console.log($(this).index);})
</script>
  • 嵌套关系
<div><button>按钮</button></div>
<div><button>按钮</button></div>
<div><button>按钮</button></div>
<div><button>按钮</button></div>
<div><button>按钮</button></div>
<div><button>按钮</button></div>
<script>$('div button').click(function() {var v1 = $('div button').index($(this));console.log(v1);})
</script>

遍历jQuery对象数组

  • 方法一: 调用者 jQuery 对象
<ul><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li>
</ul>
<script>// 定义颜色数组var arrColor = ["red","green","purple","yellow","pink"]$('ul li').each(function(index, item) {// item 是 dom 对象// 讲 item 转成 jquery 对象$(item).css("background", arrColor[index]);})
</script>
  • 方法二:调用者 $
$.each(arrColor, function(index, item) {// index 代表索引值// item 代表数组的每一项的每一项数据$("ul li").eq(index).css("background", item);
})

拓展方法

  • 方式一: 调用者 jquery 对象
<div class="box"></div>
<script>// 写法一  $.fn fn是原型对象$.fn.sayHello = function() {console.log("hello world");}$.fn.changeWidth = function() {console.log(this); // 此时 this 是 jquery 对象console.log($(this));this.css("width","500px"); // 正确$(this).animate({width:500}, 2000); // 正确}$(".box").sayHello(); // hello world$(".box").changeWidth(); //写法二 $.fn.extend({foo: function() {console.log("foo");},myRandom(num) {renturn Math.floor(Math.random()*num);}})$(".box").foo(); // foo$(".box").myRandom(100);
</script>
  • 方式二:调用者 $
// 方法一
$.sayHello = function() {console.log("hello world");
}
$.changeColor = function() {$(".box").css("background", "red")
}
$.sayHello();
$.changeColor();//写法二
$.extend({foo: function() {console.log("foo");},myRandom(num) {return Math.floor(Math.random() * num);}
})
$.foo(); // foo
$.myRandom(100);

jQuery 中的 input 和 change 的区别

<input type="range" id="range"></input>
<script>// 触发一次$("#range").change(function() {console.log("change值", $(this).val());})// 触发多次$("#range").input(function() {console.log("input值", $(this).val());})
</script>

更改 $ 别名

<button>点击一下</button>
<script>$(function() {// 更改 jQuery别名 $// 调用者: jQuery 或 $// 作用: 改变 jq的函数别名var _ = $.noConflict();_("button").click(function() {_(this).css("background", "red");})})
</script>

补充: jquery 中的 offset 与原生 offsetLeft 及 offsetTop的区别

注意: jquery 中的 offset 和原生 offset 获取的边距都是相对浏览器可视化的部分

jquery 中:

​ offset 不受 定位的影响

原生 DOM 中:

​ 父容器是否设置了 position 属性值,会影响到其 offsetLeft

<style>body {margin: 0;}.header {height: 100px;border-bottom: 3px solid #000;  }.nav {width: 1000px;/* 经过计算水平居中距离左边距离为 268px 即 margin: 0 268px*/margin: 0 auto; height: 100px;background-color: deepskyblue;/* 添加position *//* position: relative; */}.nav .box {width: 100px;height: 80px;background-color: red;}
</style>
<div class="header"><!-- 父元素 --><div class="nav"><!-- 子元素 --><div class="box"></div></div>
</div>
<script>// 通过 jquery 来获取 .box 元素距离左边的距离var point = $(".box").offset(); // {top: 0,left: 268}console.log(point); // 接下来 如果缩小浏览器的宽度小于 1000(.nav的宽度)console.log(point); // {top:0, left: 0}  正常// 父元素(.nav)去掉定位 position 也没有影响到// 原生情况下var box = document.querySelector(".box");// 父容器添加了 position 情况下console.log({top: box.offsetTop,left: box.offsetLeft}); // {top: 0, left: 0}// 父容器没有添加了 position 情况下console.log({top: box.offsetTop,left: box.offsetLeft}); // {top: 0,left: 268}
</script>

总结:

(1)在原生js 中 使用 offsetLeft 时需要考虑到父容器是否添加了定位属性

(2)而在 jq 中不需要考虑这个问题, offsetLeft 是直接获取该元素距离可视化浏览器左边的距离

(3)在 jq 中 即使子元素设置 top left 也不会影响到获取元素距离可视化浏览器的左和上的距离

jquery 对象中的position 方法

用法: $(’.box’).position(); 获取元素的位置

少用:由于jquery 的版本更新迭代,有些比较旧的版本没有该方法

offest 和 position 选择

​ 如果该元素添加了 top 和 left 属性 则使用 position

​ 反之, 使用 offset 获取即可

具体区别这里不细谈,可以通过下面例子来看看区别

<style>
body {margin: 0;}.header {height: 100px;border-bottom: 3px solid #000;  }.nav {width: 1000px;margin: 0 auto;height: 100px;background-color: deepskyblue;/* 添加position */position: relative;}.nav .box {width: 100px;height: 80px;background-color: red;/* 添加定位*/position: absolute;/* 考虑这里 */left: 30px;}
</style>
<div class="header"><!-- 父元素 --><div class="nav"><!-- 子元素 --><div class="box"></div></div>
</div>
<script>var point = $(".box").offset();console.log(point);// {top: 0, left: 298}  268 + 30var pos = $(".box").position();console.log(pos) // {top: 0, left: 30}
</script>

欢迎访问我的个人博客

jQuery常用语法笔记相关推荐

  1. 04.jQuery 基本语法笔记

    jQuery是什么 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交互 ...

  2. C#语言不常用语法笔记

    只看过3天C#语法书,了解个大概,与C++等不同之处,或者看开源遇到一些奇异用法,记录一下,脑子不够用的情况下,还是记笔记靠谱. ==================== 顺便吐槽下,这年头得会各种编 ...

  3. jQuery常用语法总结

    1.入口函数 $(document).ready(function(){}) $(function(){}) $(window).ready(function(){}) 2.$===jQuery 3. ...

  4. latex常用语法笔记

    记录latex使用过程中常见的语法: (不确定的符号可以通过在mathtype中设置"复制和粘贴选项"---latex,然后去latex中粘贴,查看对应的代码) 如何打空心1(指示 ...

  5. Linux常用语法笔记

    du -sh /*          查看目录下文件大小 wget --no-check-certificate         wget命令报错地址缺少协议类型解决办法

  6. Latex 入门笔记(2) 常用语法

    文章目录 0. 前言 1. LaTeX 文档总体结构 2. 字符相关 3. 文档元素 3.1 章节与目录 3.2 标题页 3.3 列表.引用.摘要.代码 3.4 表格 4. 排版格式 4.1 字体.字 ...

  7. jQuery插件之【jqGrid】常用语法整理-【更新】

    jqGrid常用语法整理,包含数据获取.常用函数.触发事件等 jqGrid表格数据获取相关语法 获取表格所有数据  $("#grid").jqGrid("getRowDa ...

  8. 锋利的Jquery【读书笔记】 -- 第四章 jQuery中的事件和动画

    锋利的Jquery读书笔记 第三章 jQuery中的DOM操作 jQuery中的事件 事件绑定 bind方法 合成事件 hover方法 toggle方法 事件冒泡 事件对象 停止事件冒泡 阻止默认行为 ...

  9. Python爬虫:Xpath语法笔记

    Python爬虫:Xpath语法笔记 一.选取节点 常用的路劲表达式: 表达式 描述 实例   nodename 选取nodename节点的所有子节点 xpath('//div') 选取了div节点的 ...

  10. 前端jQuery基本语法

    jQuery基础语法 #不管找什么标签,用什么选择器,都必须要写$(""),引号里面再写选择器,通过jQuery找到的标签对象就是一个jQuery对象,用原生JS找到的标签对象叫做 ...

最新文章

  1. Java opengl openal_项目里用到了openal,特分享一下openal全教程
  2. exec和sp_executesql
  3. 贷款购房 房贷 每月还款额是如何计算出来的? 每月还款额计算步骤/方法
  4. java lang ClassNotFoundException org apache jsp index jsp解决
  5. 51单片机c语言编写计算器仿真,51单片机实现计算器 proteus仿真及其程序源码 带教程...
  6. 如何使用puttygen密钥远程登录服务器
  7. 图片(img)alt属性标签怎么写
  8. spring使用之旅 ---- bean的装配
  9. 截止失真放大电路_聊一下三极管截止、放大和饱和3种工作状态
  10. Linux 下恢复误删文件
  11. 海思MPP模块视频缓冲池
  12. 计算机关机打不开,笔记本电脑强制关机打不开了怎么办
  13. 转胡一虎Blog:父亲是我生命中的永恒
  14. 信息安全保障人员(CISAW)工控网络安全方向认证介绍
  15. 记录:java实时回传大疆无人机的视频和音频,低延时,稳定高效,可以对接飞行数据、经纬度信息、飞行轨迹等
  16. FasterR-CNN,R-FCN,SSD,FPN,RetinaNet,YOLOv3速度和准确性比较
  17. 支付平台--清算总的详解
  18. Android字符串格式化
  19. Appium自动化测试(五)——PO模式(一):短信案例
  20. twitter账户受限_如何为您的企业设置Twitter帐户

热门文章

  1. springmvc上传图片后显示损毁或不能显示_猿蜕变系列7——也说说springMVC上传姿势...
  2. SLAM学习笔记-------------(六)非线性优化
  3. Java迭代器和lambda的区别_【Java公开课|Java 使用Lambda表达式遍历Iterator迭代器,是你学习Java的超车途径】- 环球网校...
  4. oracle如何查不满16岁,如何在Oracle数据库中使用SQL查询获取基于年龄组的人数?...
  5. centos7上mycat安装_Mysql+Mycat实现数据库主从同步与读写分离
  6. html中src为空,怎么解决img里面src为空状态下的边框问题
  7. 在Vista系统中,Flash渲染功能无法使用,咋办?
  8. jquery 插件zClip实现复制到剪贴板功能
  9. mysql windows下连接linux下的mysql
  10. 关于定时任务中批量更新方案思考