jQuery - 03. each、prevaAll、nextAll、获取属性、修改属性attr/val/text()、jq.height/width、offset()./position()./scrol Left/Top 、事件绑定bind、delegate、on、事件解绑、事件对象、多库共存
each 方法
$ ( selector).each(function( index,element) { } );
参数一表示当前元素在所有匹配元素中的索引号
参数二表示当前元素(DOM对象)
- prevAll("li") 同个父系中前边所有的li元素
- nextAll("li")同个父系后边所有的li元素
- jQuery(function () {
- //设置不一样的盒子透明度逐渐递增
- $("ul li").each(function (index,element) {
- //console.log(index+"---"+element.tagName);
- $(element).css("opacity",(index+1)/10);
- });
- });
操作form表单:
jqipt.attr(“属性名”,属性值)
获取 jqipt.attr(“属性名”);
添加类,jqipt.attr(“class”,“类名”)
移除属性 jqipt.removeAttr(“属性名”)
添加checked、selected、display 使用prop(“属性名”,“属性值”)
val( )方法
获取标签中的value的属性
$("input").val( ); 获取input的值
尺寸操作
获取宽高:
jq对象.height / width ( ); 只是内容的尺寸,不包括padding和margin和border
设置宽高:
jq对象.height /width("200px" ) ;
px 可加可不加,不加不需要写双引号
坐标值操作:
offset( ).left / top ;距离页面顶端或左边的距离
position( ).left / top ; 距离最近的已定位的父系盒子的距离,获取的值和padding、margin无关
scrollLeft / Top( );被卷曲的头部。 无参数则为获取,有参数则为赋值
事件绑定:
http://www.w3school.com.cn/jquery/jquery_ref_events.asp
事件源.bind(“事件一 事件二”,function(){ } ); 可为多个触发事件绑定同一个方法
delegate( “box","click mouseenter", function ( ) { } ); 特点:性能高,支持动态创建的元素
- $(".parentBox").delegate("p", "click", function(){
- //为 .parentBox下面的所有的p标签绑定事件
- });
on("事件1 事件2“,”事件源“,{ ( json串 ) },function() { } ) ;
- $(selector).on(events,[selector],[data],handler);
给匹配的元素绑定事件,包括了上面所有绑定事件方式的优点
语法:
// 第一个参数:events,绑定事件的名称可以是由空格分隔的多个事件(标准事件或者自定义事件)
// 第二个参数:selector, 执行事件的后代元素
// 第三个参数:data,传递给处理函数的数据,事件触发的时候通过event.data来使用
// 第四个参数:handler,事件处理函数
$(document).on("click mouseenter",".box",{"name":111}, function (event) {
alert(event.data.name);
});
$(selector).on("click","span",function ( ) { } ;
// 表示给$(selector)绑定事件,当必须是它的内部元素span才能执行这个事件
事件解绑:
使用unbind、 undelegate方式解绑. 只解绑使用此方式绑定的
- $(selector).unbind(); //解绑所有的事件
- $(selector).unbind(“click”); //解绑指定的事件
- $( selector ).undelegate(); //解绑所有的delegate事件
- $( selector).undelegate( “click” ); //解绑所有的click事件
使用off()解绑on方式绑定的事件
- $ (selector ).off( ) ; //解绑匹配元素的所有事件
- $ (selector ).off("click") ;// 解绑匹配元素的所有click事件
- $ (selector) .off(:click", " ** "; //解绑所有代理的click事件,元素本事的事件不会被解绑
事件触发
简单事件触发
$(selector).click ( ); // 触发click事件
trigger方法触发事件
$(selector).trigger("click");
triggerHander触发事件响应方法,不触发浏览器行为;比如(文本框获得焦点的默认行为)
$(selector).triggerHandler("focus");
jQuery事件对象介绍
event.date
event.data 传递给事件处理程序的额外数据
event.currentTarget 等同于this,当前DOM对象
event.pageX 鼠标相对于文档左部边缘的位置
event.target 触发事件源,不一定===this
event.stopPropagation(); 阻止事件冒泡
event.preventDefault(); 阻止默认行为
event.type 事件类型:click,dbclick…
event.which 鼠标的按键类型:左1 中2 右3
event.keyCode 键盘按键代码
隐式迭代
隐式迭代的意思是:在方法的内部会为匹配到的所有元素进行循环遍历,执行相应的方法;而不用我们再进行循环,简化我们的操作,方便我们调用。
如果获取的是多元素的值,大部分情况下返回的是第一个元素的值。
多库共存
解决方式:
// 作用:让jQuery释放对$的控制权,让其他库能够使用$符号,达到多库共存的目的。此后,只能使用jQuery来调用jQuery提供的方法
$.noConflict(); 放弃版本高的$的使用权,版本高的写在下面
放弃两个符号的使用权,同时定义一个新的使用权
var MrLv = $.noConflict(true);
console.log($.fn.jquery);
console.log(jQuery.fn.jquery);
console.log(MrLv.fn.jquery);
jQueryUI
jQueryUI专指由jQuery官方维护的UI方向的插件。
官方API:http://api.jqueryui.com/category/all/
其他教程:jQueryUI教程
基本使用:
- 引入jQueryUI的样式文件
- 引入jQuery
- 引入jQueryUI的js文件
- 使用jQueryUI功能
- <!DOCTYPE html>
- <html>
- <head lang="en">
- <meta charset="UTF-8">
- <title></title>
- <style>
- * {
- padding: 0;
- margin: 0;
- }
- .wrap {
- width: 300px;
- margin: 100px auto 0;
- }
- table {
- border-collapse: collapse;
- border-spacing: 0;
- border: 1px solid #c0c0c0;
- }
- th,
- td {
- border: 1px solid #d0d0d0;
- color: #404060;
- padding: 10px;
- }
- th {
- background-color: #09c;
- font: bold 16px "微软雅黑";
- color: #fff;
- }
- td {
- font: 14px "微软雅黑";
- }
- tbody tr {
- background-color: #f0f0f0;
- }
- tbody tr:hover {
- cursor: pointer;
- background-color: #fafafa;
- }
- </style>
- <script src="jquery-1.11.1.js"></script>
- <script>
- $(function () {
- //需求1:点击上面的多选按钮,下面的所有多选按钮都和上面的一致
- //需求2:点击下面的多选按钮,判断下面的所有多选按钮都是否全部被选定只有全部被选定上面的才被选定
- //需求1:点击上面的多选按钮,下面的所有多选按钮都和上面的一致
- //步骤:绑定事件,直接让下面的所有按钮和上面的按钮属性值一模一样
- $("#j_cbAll").click(function () {
- //直接让下面的所有按钮和上面的按钮属性值一模一样
- $("#j_tb input:checkbox").prop("checked",$(this).prop("checked"));
- });
- //需求2:点击下面的多选按钮,判断下面的所有多选按钮都是否全部被选定只有全部被选定上面的才被选定//需求2:点击下面的多选按钮,判断下面的所有多选按钮都是否全部被选定只有全部被选定上面的才被选定
- $("#j_tb input:checkbox").click(function () {
- //判断,只有所有都背选定,上面的才被选定
- //技术点:带有checked属性的标签和checkbox个数一样多的时候
- if($("#j_tb input:checkbox").length === $("#j_tb input:checked").length){
- //只有所有的都有checked属性,上面的才被选定
- $("#j_cbAll").prop("checked",true);
- }else{
- $("#j_cbAll").prop("checked",false);
- }
- });
- })
- </script>
- </head>
- <body>
- <div class="wrap">
- <table>
- <thead>
- <tr>
- <th>
- <input type="checkbox" id="j_cbAll"/>
- </th>
- <th>课程名称</th>
- <th>所属学院</th>
- </tr>
- </thead>
- <tbody id="j_tb">
- <tr>
- <td>
- <input type="checkbox"/>
- </td>
- <td>JavaScript</td>
- <td>前端与移动开发学院</td>
- </tr>
- <tr>
- <td>
- <input type="checkbox"/>
- </td>
- <td>css</td>
- <td>前端与移动开发学院</td>
- </tr>
- <tr>
- <td>
- <input type="checkbox"/>
- </td>
- <td>html</td>
- <td>前端与移动开发学院</td>
- </tr>
- <tr>
- <td>
- <input type="checkbox"/>
- </td>
- <td>jQuery</td>
- <td>前端与移动开发学院</td>
- </tr>
- </tbody>
- </table>
- </div>
- </body>
- </html>
表格全选和反选
- <!DOCTYPE html>
- <html>
- <head lang="en">
- <meta charset="UTF-8">
- <title></title>
- <style>
- * {
- margin: 0;
- padding: 0;
- }
- @keyframes blink {
- 0%,
- 100% {
- opacity: 1
- }
- 50% {
- opacity: 0
- }
- }
- @-webkit-keyframes blink {
- 0%,
- 100% {
- opacity: 1
- }
- 50% {
- opacity: 0
- }
- }
- @-moz-keyframes blink {
- 0%,
- 100% {
- opacity: 1
- }
- 50% {
- opacity: 0
- }
- }
- .wrap {
- width: 1000px;
- text-align: center;
- margin: 100px auto 0;
- }
- .wrap h1 {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-weight: 300;
- }
- .word {
- font-weight: 700;
- }
- .typed-cursor {
- opacity: 1;
- -webkit-animation: blink .7s infinite;
- -moz-animation: blink .7s infinite;
- animation: blink .7s infinite;
- display: none;
- }
- .saySection {
- margin-top: 50px;
- }
- .saySection input {
- font-size: 30px;
- }
- .saySection .txtSay {
- padding-left: 10px;
- }
- .saySection .btnSay {
- display: inline-block;
- padding: 0 20px;
- cursor: pointer;
- }
- </style>
- <script src="jquery-1.11.1.js"></script>
- <script>
- jQuery(function () {
- //需求1:页面加载的时候每隔固定时间,.word中添加一个字符。
- //需求2:点击say按钮,上面的input中的内容,每隔固定时间,.word中添加一个字符,插入的就是input中的内容。
- //需求1:页面加载的时候每隔固定时间,.word中添加一个字符。
- //步骤:
- //1.定义字符串,然后显示插入条光标(把字符串转换成数组)
- //2.定时器。
- //3.每隔一段时间,在.word中插入一个文字。( 就是改变内容,text() )
- //4.判断,如果文字的个数和数组的长度一样了,就清除定时器
- //1.定义字符串,然后显示插入条光标(把字符串转换成数组)
- var str = "红鲤鱼与绿鲤鱼与驴";
- var arr = str.split("");
- var str2 = "";
- var num = 0;
- var timer = null;
- $(".typed-cursor").show();
- //2.定时器。
- timer = setInterval(function () {
- //4.判断,如果文字的个数和数组的长度一样了,就清除定时器
- if(arr[num] === undefined){
- clearInterval(timer);
- $(".typed-cursor").hide();
- }else{
- //定义一个字符串用来接收
- str2 += arr[num];
- //3.每隔一段时间,在.word中插入一个文字。( 就是改变内容,text() )
- $(".word").text(str2);
- //索引值自增
- num++
- }
- },200);
- //需求2:点击say按钮,上面的input中的内容,每隔固定时间,.word中添加一个字符,插入的就是input中的内容
- $("#btnSay").click(function () {
- str = $("#inValue").val();
- $("#inValue").val("");
- arr = str.split("");
- str2 = "";
- num = 0;
- //2.定时器。
- timer = setInterval(function () {
- //4.判断,如果文字的个数和数组的长度一样了,就清除定时器
- if(arr[num] === undefined){
- clearInterval(timer);
- $(".typed-cursor").hide();
- }else{
- //定义一个字符串用来接收
- str2 += arr[num];
- //3.每隔一段时间,在.word中插入一个文字。( 就是改变内容,text() )
- $(".word").text(str2);
- //索引值自增
- num++
- }
- },200);
- });
- });
- </script>
- </head>
- <body>
- <div class="wrap">
- <h1>
- You want to say : <span class="word"></span><span class="typed-cursor">|</span> !
- </h1>
- <div class="saySection">
- <input type="text" id="inValue" class="txtSay"/>
- <input type="button" value="Say" id="btnSay" class="btnSay"/>
- </div>
- </div>
- </body>
- </html>
动态输入
- <!DOCTYPE html>
- <html>
- <head lang="en">
- <meta charset="UTF-8">
- <title></title>
- <script src="jquery-1.11.1.js"></script>
- <script>
- $(function () {
- //需求:在input中安回车,插入条光标跳转到下一个input
- $("input").on("keyup", function (e) {
- if(e.keyCode === 13){
- // alert("您按了,回车键!");
- //跳转到下一行:下一个input获取插入条光标。
- // focus();//js和jq中一模一样的方法
- $(this).next().next().focus();
- // $(this).next().next()[0].focus();
- }
- });
- $("input").on("mouseenter", function (e) {
- //选定所有内容(能够输入内容的标签)
- $(this).select();
- });
- })
- </script>
- </head>
- <body>
- <input type="text" value="我是中国人!"/><br>
- <input type="text" value="我是中国人!"/><br>
- <input type="text" value="我是中国人!"/><br>
- <input type="text" value="我是中国人!"/><br>
- <input type="text" value="我是中国人!"/><br>
- <input type="text" value="我是中国人!"/><br>
- <input type="text" value="我是中国人!"/><br>
- <div>nihao </div>
- </body>
- </html>
回车换行
- <!DOCTYPE html>
- <html>
- <head lang="en">
- <meta charset="UTF-8">
- <title></title>
- <style>
- .wrap {
- width: 400px;
- height: 400px;
- margin: 100px auto 0;
- }
- .wrap h1 {
- text-align: center;
- }
- .wrap div {
- width: 400px;
- height: 300px;
- background: pink;
- font-size: 30px;
- text-align: center;
- line-height: 300px;
- }
- </style>
- <script src="jquery-1.11.1.js"></script>
- <script>
- $(function () {
- //需求:在页面上,按键.是哪个颜色的首写字母div就改变为该颜色,然后span内容赋值。
- //步骤:
- //1.给document绑定keyup事件
- //2.获取值,根据此值,给div和span上色和内容
- var div = $("#bgChange");
- var span = $("#keyCodeSpan");
- //绑定事件
- $(document).keyup(function (e) {
- //调用方法
- setColor(e.keyCode);
- });
- function setColor(aaa){
- //alert(e.keyCode);
- //2.获取值,根据此值,给div和span上色和内容
- switch (aaa){
- case 80:
- //修改内容pink
- setEle("pink",aaa);
- break;
- case 66:
- //修改内容blue
- setEle("blue",aaa);
- break;
- case 79:
- //修改内容orange
- setEle("orange",aaa);
- break;
- case 82:
- //修改内容red
- setEle("red",aaa);
- break;
- case 89:
- //修改内容yellow
- setEle("yellow",aaa);
- break;
- default :
- alert("系统没有设置该颜色!");
- }
- function setEle(a,b){
- div.css("background-color",a);
- span.text(b);
- }
- }
- //1.给document绑定keyup事件
- // $(document).keyup(function (e) {
- // //alert(e.keyCode);
- // //2.获取值,根据此值,给div和span上色和内容
- // switch (e.keyCode){
- // case 80:
- // //修改内容pink
- // div.css("background-color","pink");
- // span.text(e.keyCode);
- // break;
- // case 66:
- // //修改内容blue
- // div.css("background-color","blue");
- // span.text(e.keyCode);
- // break;
- // case 79:
- // //修改内容orange
- // div.css("background-color","orange");
- // span.text(e.keyCode);
- // break;
- // case 82:
- // //修改内容red
- // div.css("background-color","red");
- // span.text(e.keyCode);
- // break;
- // case 89:
- // //修改内容yellow
- // div.css("background-color","yellow");
- // span.text(e.keyCode);
- // break;
- // default :
- // alert("系统没有设置该颜色!");
- // }
- // });
- })
- </script>
- </head>
- <body>
- <div class="wrap">
- <h1>按键改变颜色</h1>
- <div id="bgChange">
- keyCode为:
- <span id="keyCodeSpan">80</span>
- </div>
- </div>
- </body>
- </html>
按键变色
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>五角星评分案例</title>
- <style>
- * {
- padding: 0;
- margin: 0;
- }
- .comment {
- font-size: 40px;
- color: #ff3100;
- }
- .comment li {
- float: left;
- cursor: pointer;
- }
- ul {
- list-style: none;
- }
- </style>
- <script src="jquery-1.11.1.js"></script>
- <script>
- $(function () {
- var wjx_none = '☆'; // 空心五角星
- var wjx_sel = '★'; // 实心五角星
- //需求1:鼠标放上去当前的li和之前所有的li内容全部变为实心五角星,移开变为空心。
- $(".comment li").on("mouseenter", function () {
- //当前五角星,和之前的所有五角星,全部是实心的,其他的为空心
- // $(this).text(wjx_sel).prevAll("li").text(wjx_sel);
- // $(this).nextAll("li").text(wjx_none);
- $(this).text(wjx_sel).prevAll("li").text(wjx_sel).end().nextAll("li").text(wjx_none);
- });
- $(".comment li").on("mouseleave", function () {
- //bug:如果没有点击过li,那么会出现无法清除的现象,处理办法就是先判断,看看是否有current类
- if($("li.current").length === 0){
- $(".comment li").text(wjx_none);
- }else{
- //当鼠标移开的时候,谁有current类名,那么当前和之前所有的li前部是实心五角星,后面的所有li都是空心
- $("li.current").text(wjx_sel).prevAll("li").text(wjx_sel).end().nextAll("li").text(wjx_none);
- }
- });
- //需求2:鼠标点击那个li,当你前li和之前所有的li都变成实心五角星,其他变为空心。
- $(".comment li").on("click", function () {
- //点击哪个li给他加一个类名。清空其他所有的li的类名
- $(this).attr("class","current").siblings("li").removeAttr("class");
- });
- });
- </script>
- </head>
- <body>
- <ul class="comment">
- <li>☆</li>
- <li>☆</li>
- <li>☆</li>
- <li>☆</li>
- <li>☆</li>
- </ul>
- </body>
- </html>
五角星案例
jQuery - 03. each、prevaAll、nextAll、获取属性、修改属性attr/val/text()、jq.height/width、offset()./position()./scrol Left/Top 、事件绑定bind、delegate、on、事件解绑、事件对象、多库共存的更多相关文章
- jQuery常用属性方法大全 attr(),val()
@@@@属性篇: 写作本篇文章的意义:jQuery的教程千千万,却没有英文版的API讲的系统.到位,一些话用中文翻译过来味道就变了,所以我将英文版的API的一些常用的方法单独提出来放在这里,并用自己的 ...
- jQuery 2.0.3 源码分析 事件绑定 - bind/live/delegate/on
事件(Event)是JavaScript应用跳动的心脏,通过使用JavaScript ,你可以监听特定事件的发生,并规定让某些事件发生以对这些事件做出响应 事件的基础就不重复讲解了,本来是定位源码分析 ...
- jQuery事件之解绑事件
语法: $(selector).unbind([eventType][,handler(eventObject)]); 返回值:jQuery 参数解释: eventTypey:类型:String以后包 ...
- jquery绑定事件,解绑事件
unbind([type],[data]) 是 bind()的反向操作,从每一个匹配的元素中删除绑定的事件.如果没有参数,则删除所有绑定的事件.你可以将你用bind()注册的自定义事件取消绑定.如果提 ...
- jquery移除元素时会自动解绑事件
.html() When .html() is used to set an element's content, any content that was in that element is co ...
- JQuery事件绑定bind、live、on、trigger
one 作用:只触发一次,并在触发后失效,触发时会产生时间冒泡. 语法:$(selector).one(event,data,function) 例子: $(item).one("click ...
- 关于jquery中的事件绑定bind()和live()
live可以说是bind是方法的变种. 二者的主要区别就是live方法的作用机理是事件委托,live方法的作用机理是将事件绑定DOM的根节点上. live方法的处理机制就是把事件绑定在DOM树的根节点 ...
- 从零开始学 Web 之 jQuery(六)为元素绑定多个相同事件,解绑事件
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
- jQuery相关方法8-----解绑事件
一.解绑事件方法unbind() 用什么方式绑定的事件,最好用对应的方式解绑事件 unbind("事件名字")括号里写上事件名字,就会解除这个事件 unbind()括号里没有参数就 ...
随机推荐
- k8s学习02-----kubeadm部署k8s
机器规划 系统配置 三台机器都执行 1.关闭selinux及firewalld sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux ...
- GooglePlay新版排行榜接入
新版本的GMS的api和老版本的有很大的差异,刚接了一下,在这里留一个记号,以便查阅:判定是否已经登录 private static boolean isSignedIn(Cocos2dxActivi ...
- Java小白进阶之值传递-引用传递
class ClassA{ int value;//成员变量 } public class TestClassA{ public static void main(String args[]){ in ...
- Spring系列(二):Spring IoC应用
一.Spring IoC的核心概念 IoC(Inversion of Control 控制反转),详细的概念见Spring系列(一):Spring核心概念 二.Spring IoC的应用 1.定义B ...
- java多线程基础(一)--sleep和wait的区别
sleep和wait的区别有: 1.这两个方法来自不同的类分别是Thread和Object: 2.最主要是sleep方法没有释放锁,而wait方法释放了锁,使得线程可以使用同步控制块或者方法: 3.w ...
- Hibernate的执行流程
Hibernate框架的工作流程 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xml中的&l ...
- Mysql超详解
Mysql超详解 一.命令框基本操作及连接Mysql 找到Mysql安装路径,查看版本 同时按快捷键win+R会弹出一个框,在框中输入cmd 点击确定后会出现一个黑框,这是命令框,我们的操作要在这命令 ...
- Java 内存模型和 JVM 内存结构真不是一回事
这两个概念估计有不少人会混淆,它们都可以说是 JVM 规范的一部分,但真不是一回事!它们描述和解决的是不同问题,简单来说, Java 内存模型,描述的是多线程允许的行为 JVM 内存结构,描述的是线程 ...
- 几图理解BeautifulSoup
- java多线程----悲观锁与乐观锁
java多线程中悲观锁与乐观锁思想 一.悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线 ...