jQuery

jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多),对javascript进行了封装,是的更加便捷的开发,并且在兼容性方面十分优秀。

http://www.php100.com/manual/jquery/  jQuery 1.12中文文档

jQuery和dom之间的转换关系:

jQuery对象[0]   => Dom对象

Dom对象    => $(Dom对象)

查找元素:引入jQuery后用$调用其方法

1.选择器,直接找到某个或者某类标签

1.1 id

$('#id')   #通过id找到对应标签

1.2. class

<div class='c1'></div>

$(".c1")  #通过class找到对应标签

1.3. 标签

$('a')   #找到所有的a标签

1.4 组合查找

$('a')            #找到所有的a标签

$('.c2')  #找到所有的class=c2的标签

$('a,.c2,#i10')  #找到所有的a标签和class=c2的标签以及id=i10的标签

1.5 层级查找

$('#i10 a')     #子子孙孙(匹配id=i10的标签下面所有的a标签)

$('#i10>a')    #只匹配子标签(只匹配id=i10的标签子标签中的a标签)

1.6 基本选择器

:first   #匹配符合要求的所有标签的第一个标签

:last   #匹配符合要求的所有标签的最后一个标签

:eq(index)  #通过索引匹配,index从0开始

1.7 属性

$('[tony]')               #具有tony属性的所有标签

$('[tony="123"]')       #tony属性等于123的标签

$("input[type='text']")  #先匹配标签后匹配属性

$(':text')                #简写(匹配所有的text属性)

实例:多选,反选,全选

  

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
 </head>
 <body>
     <input type="button" value="全选" onclick="checkAll();">
     <input type="button" value="反选" onclick="reverseAll();">
     <input type="button" value="取消" onclick="cancleAll();">
     <table border="1">
         <thead>
             <tr>
                 <th>请选择</th><th>IP</th><th>Port</th>
             </tr>
         </thead>
         <tbody id="tb">
             <tr>
                 <td><input type="checkbox"></td>
                 <td>1.1.1.1</td>
                 <td>80</td>
             </tr>
             <tr>
                 <td><input type="checkbox"></td>
                 <td>1.1.1.1</td>
                 <td>80</td>
             </tr>
             <tr>
                 <td><input type="checkbox"></td>
                 <td>1.1.1.1</td>
                 <td>80</td>
             </tr>
         </tbody>
     </table>
     <script src="jquery-1.12.4.js"></script>
     <script>
         function checkAll() {
             $('#tb :checkbox').prop('checked',true);
         }
         function cancleAll() {
             $('#tb :checkbox').prop('checked',false);
         }
         function reverseAll() {
             /*$('#tb :checkbox').each(function () {
                 var v = $(this).prop('checked')?false:true;
                 $(this).prop('checked',v);
             });*/
             $('#tb :checkbox').each(function () {
 //                dom操作:
 //                if(this.checked){
 //                this.checked = false;
 //                }else{this.checked = true;}

 //                jQuery操作:
 //                if ($(this).prop('checked')){
 //                    $(this).prop('checked',false);
 //                }else{$(this).prop('checked',true);}

 //                三元运算:
                 var v = $(this).prop('checked')?false:true;
                 $(this).prop('checked',v);});}
     </script>
 </body>
 </html>

1.8对checkbox标签的操作(prop方法):

- $('#tb:checkbox').prop('checked');       #不传值表示获取值

- $('#tb:checkbox').prop('checked', true);  #传值表示设置值为true

1.9 jQuery方法内置循环:

- $('#tb :checkbox').xxxx (xxxx为直接做操作),例如:

$('#tb :checkbox').prop('checked', true) #给匹配到的每一个chackbox标签加上checked属性为true

或者.each() 内套函数:

- $('#tb :checkbox').each(function(k){

// k为当前索引

// this,DOM对象(代指当前循环的元素),$(this)转换成jQuery对象

})

三元运算:

- var v = 条件 ? 真值 : 假值 (若条件成立则v为true,否则false)

2.筛选:

$('#i1').next()           #获取当前标签的下一个标签

$('#i1').nextAll()        #获取当前标签的下边所有标签

$('#i1').nextUntil('#i2')  #获取当前标签以下直到id为i2的标签

$('#i1').prev()      #上一个

$('#i1').prevAll()

$('#i1').prevUntil('#i2')

$('#i1').parent()         #父标签

$('#i1').parents()

$('#i1').parentsUntil()

$('#i1').children()    #子标签

$('#i1').siblings()     #获取当前标签的所有同级(兄弟)标签

$('#i1').find(‘#c1’)    #匹配当前标签所有子孙标签中class=c1的标签

代码示例:(筛选器)

  

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
     <style>
         .c1 {border: 1px solid #DDDDDD;
             height: 400px;width: 200px;}
         .item {color:white;}
         .hide {display: none;}
     </style>
 </head>
 <body class="c1">
     <div>
         <div class="item">标题一</div>
         <div class="content">内容一</div>
     </div>
     <div>
         <div class="item">标题二</div>
         <div class="content hide">内容二</div>
     </div>
     <div>
         <div class="item">标题三</div>
         <div class="content hide">内容三</div>
     </div>
     <script src="jquery-1.12.4.js"></script>
     <script>
         $('.item').click(function () {
             $(this).next().removeClass('hide').parent().siblings().find('.content').addClass('hide');
 //            $(this).next().removeClass('hide');
 //            $(this).parent().siblings().find('.content').addClass('hide')
         })
     </script>
 </body>
 </html>

$('li:eq(1)')    #选择器都由字符串包裹

$('li').eq(1)    #筛选器查找

first()

last()

hasClass(class) #是否具有样式

3.文本操作:

$(..).text()                  # 获取文本内容

$(..).text("<a>1</a>")     # 设置文本内容

$(..).html()

$(..).html("<a>1</a>")

$(..).val()       ## 获取表单内容

$(..).val(..)     ## 设置表单内容

4.样式操作:

addClass       #添加样式

removeClass   #移除样式

toggleClass    #设置开关样式效果

5.属性操作:

# 专门用于做自定义属性  *****

$(..).attr('n')      #获取属性值

$(..).attr('n','v')   #设置属性值

$(..).removeAttr('n') #删除属性

<input type='checkbox' id='i1' />

# 专门用于chekbox,radio  *****

$(..).prop('checked')     #获取值

$(..).prop('checked', true) #设置值

模态对话框代码示例:

  

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
     <style>
         .hide {
             display: none;
         }
         .modal {
             position: fixed;
             width: 400px;
             height: 200px;

             top:50%;
             left:50%;
             margin-left: -250px;
             margin-top: -200px;
             z-index: 10;
         }
         .shadow {
             position: fixed;
             top:0;
             right:0;
             bottom:0;
             left:0;
             background-color: black;
             opacity: 0.6;
             z-index: 9;
         }
         .edit {
            border-radius:2px;
            border: 2px outset white;
            cursor: pointer;
         }
     </style>
 </head>
 <body>
     <div class="modal hide">
         <div style="width: 250px;height: 150px;margin: 20px auto;">
             Host:<input name="hostname" type="text"><p></p>
             Port:<input name="port" type="text"><p></p>
              IP:<input name="IP" type="text">
             <p></p>
             <input style="margin-left: 75px;" type="button" value="确定">
             <input id="i2" type="button" value="取消">
         </div>
     </div>
     <div class="shadow hide"></div>
     <input id="i1" type="button" value="添加" >
     <input type="button" value="全选" onclick="checkAll();">
     <input type="button" value="反选" onclick="reverseAll();">
     <input type="button" value="取消" onclick="cancleAll();">
     <table border="1">
         <thead>
             <tr>             <th>HostName</th><th>Port</th><th>IP</th><th>操作</th>
             </tr>
         </thead>
         <tbody id="tb">
             <tr>
                 <td target="hostname">1.1.1.1</td>
                 <td target="port">80</td>
                 <td target="IP">80</td>
                 <td>
                     <input type="button" class="edit" value="编辑"/>|<a>删除</a>
                 </td>
             </tr>
             <tr>
                 <td target="hostname">1.1.1.2</td>
                 <td target="port">80</td>
                 <td target="IP">80</td>
                 <td>
                     <input type="button" class="edit" value="编辑"/>|<a>删除</a>
                 </td>
             </tr>
             <tr>
                 <td target="hostname">1.1.1.3</td>
                 <td target="port">80</td>
                 <td target="IP">80</td>
                 <td>
                     <input type="button" class="edit" value="编辑"/>|<a>删除</a>
                 </td>
             </tr>
         </tbody>
     </table>
     <script src="jquery-1.12.4.js"></script>
     <script>
         $('#i1').click(function () {
             $('.modal,.shadow').removeClass('hide')
         });
         $('#i2').click(function () {
            $('.modal,.shadow') .addClass('hide')
            $('.modal input[name="hostname"]').val("");
             $('.modal input[name="port"]').val("");
             $('.modal input[name="IP"]').val("");
         });
         $('.edit').click(function () {
             $('.modal,.shadow').removeClass('hide');
             var tds = $(this).parent().prevAll();
             tds.each(function () {
                 var n = $(this).attr('target');
                 var text = $(this).text();
                 $('.modal input[name="'+n+'"]').val(text)
             });});
     </script>
 </body>
 </html>

  TAD切换菜单代码示例:

  

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
     <style>
         .menu {
             height: 38px;
             line-height: 38px;}
         .menu-item {
             float: left;
             border-right: 1px solid red;
             padding: 0 10px;
             cursor: pointer;}
         .active {
             }
         .hide {
             display: none;}
     </style>
 </head>
 <body>
     <div style="width:700px;margin: 100px auto;height: 500px;">
         <div class="menu">
             <div class="menu-item active" a="1">菜单一</div>
             <div class="menu-item" a="2">菜单二</div>
             <div class="menu-item" a="3">菜单三</div>
         </div>
         <div class="content" style="height: 300px;border: 1px solid #DDDDDD">
             <div b="1">内容一</div>
             <div class="hide" b="2">内容二</div>
             <div class="hide" b="3">内容三</div>
         </div>
     </div>
     <script src="jquery-1.12.4.js"></script>
     <script>
         $('.menu-item').click(function(){
             $(this).addClass('active').siblings().removeClass('active');
             $(".content").children().eq($(this).index()).removeClass('hide').siblings().addClass('hide')
         });
     </script>
 </body>
 </html>

  PS: index 获取索引位置

6.文档处理:

append    #在匹配标签的内部最下边添加标签

prepend   #在匹配标签的内部最上边添加标签

after      #在匹配标签外部后边追加标签

before     #在匹配标签外部前边追加标签

remove    #删除某个标签

empty      #清空标签内容,标签不删除

clone      #复制一个标签

7.css处理

$('.t1').css('样式名称', '样式值')

点赞代码示例:

  

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>Title</title>
     <style>
         .container {padding: 50px;
             border:1px solid #DDDDDD;}
         .content {position: relative;
             width:30px;}
     </style>
 </head>
 <body>
     <div class="container">
         <div class="content">
             <span>赞</span>
         </div>
     </div>
     <div class="container">
         <div class="content">
             <span>赞</span>
         </div>
     </div>
     <script src="jquery-1.12.4.js"></script>
     <script>
         $('.content').click(function () {
             addFavor(this);});
         function addFavor(self) {
             var fontsize = 15;
             var top = 0;
             var right = 0;
             var opacity = 1;
             var tag = document.createElement('i');
             $(tag).text('+1');
             $(tag).css('color','green');
             $(tag).css('position','absolute');
             $(tag).css('fontsize',fontsize + 'px');
             $(tag).css('top',top + 'px');
             $(tag).css('right',right + 'px');
             $(tag).css('opacity',opacity);
             $(self).append(tag);
             var obj = setInterval(function () {
                 fontsize = fontsize + 10;
                 top -= 10;right -= 10;opacity -= 0.2;
                 $(tag).css('fontSize',fontsize + 'px');
                 $(tag).css('top',top + 'px');
                 $(tag).css('right',right + 'px');
                 $(tag).css('opacity',opacity);
                 if (opacity < 0) {
                     clearInterval(obj);
                     $(tag).remove();}},100)}
     </script>
 </body>
 </html>

上例用到的方法:

- $('.t1').append()

- $('.t1').remove()

- setInterval #设置定时时间

- 透明度 1 ==> 0

- position

- 字体大小,位置

8.位置:

$(window).scrollTop()      #获取位置(高度)信息

$(window).scrollTop(0)     #设置像素高度

scrollLeft([val])

offset().left                 #指定标签在html中的坐标

offset().top                 #指定标签在html中的坐标

position()   #指定标签相对父标签(relative标签)的坐标

移动面板代码示例:

  

 <!DOCTYPE html>
 <html>
 <head lang="en">
     <meta charset="UTF-8">
     <title></title>
 </head>
 <body>
     <div style="border: 1px solid #ddd;width: 600px;position: absolute;">
         <div id="title" style="height: 40px;"></div>
         <div style="height: 300px;"></div>
     </div>
 <script type="text/javascript" src="jquery-1.12.4.js"></script>
 <script>
     $(function(){
         $('#title').mouseover(function(){
             $(this).css('cursor','move');
         }).mousedown(function(e){
             //console.log($(this).offset());
             var _event = e || window.event;
             var ord_x = _event.clientX;
             var ord_y = _event.clientY;
             var parent_left = $(this).parent().offset().left;
             var parent_top = $(this).parent().offset().top;
             $(this).bind('mousemove', function(e){
                 var _new_event = e || window.event;
                 var new_x = _new_event.clientX;
                 var new_y = _new_event.clientY;
                 var x = parent_left + (new_x - ord_x);
                 var y = parent_top + (new_y - ord_y);
                 $(this).parent().css('left',x+'px');
                 $(this).parent().css('top',y+'px');})
         }).mouseup(function(){
             $(this).unbind('mousemove');});})
 </script>
 </body>
 </html>

9.事件

  DOM:四种绑定方式

  • $('.c1').click()

$('.c1').....

  • $('.c1').bind('click',function(){

})

  • $('.c1').unbind('click',function(){

})

  • $('.c').delegate('a', 'click', function(){

})   #委托(delegate)(新添加的标签也可以通过该方法绑定时间)

  • $('.c').undelegate('a', 'click', function(){

})

  • $('.c1').on('click', function(){

})

  • $('.c1').off('click', function(){

})

阻止事件发生

return false

# 当页面框架加载完成之后,自动执行

$(function(){

$(...) #在function里面执行jQuery操作

})

10.jQuery扩展:

- $.extend        执行: $.方法

- $.fn.extend     执行:$(..).方法

  第一种调用方法示例:

  

 <script src="jquery-1.12.4.js"></script>
 <script>
 //    $('#i1').css();
 //    $.ajax();
 //    jQuery扩展
     $.extend({
         'test':function () {
             return 'success';}});
     $.text();  //直接调用test方法
 </script>

  第二种调用方法示例:

  

 <script src="jquery-1.12.4.js"></script>
 <script>
     $.fn.extend({
         'test':function () {
             return 'success';}}); //必须是$.fn.extend()
     $('#i1').text(); //必须选中某个标签后才可以调用
 </script>

还可以上网找各种jQuery扩展,解决不同jQuery之间(插件和插件间)全局变量和函数名称冲突的方法(将变量和函数封装在自执行函数里):

(function(arg){

var status = 1;

// 封装变量

})(jQuery)   #或者传 $,实参是将参数传递给自执行函数

Python自动化 【第十七篇】:jQuery介绍的更多相关文章

  1. 【python自动化第十一篇】

    [python自动化第十一篇:] 课程简介 gevent协程 select/poll/epoll/异步IO/事件驱动 RabbitMQ队列 上节课回顾 进程: 进程的诞生时为了处理多任务,资源的隔离, ...

  2. Appium+python自动化(十七)- 你难道猴哥失散多年的混血弟弟 - Monkey简介之开山篇(超详解)

    简介 今天由宏哥给小伙伴们来介绍猴哥的混血弟弟=Monkey.Monkey 是Android SDK提供的一个命令行工具, 可以简单,方便地运行在任何版本的Android模拟器和实体设备上. Monk ...

  3. python自动化运维篇

    1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...

  4. python【第十七篇】jQuery

    1.jQuery是什么? jQuery是一个 JavaScript/Dom/Bom 库. jQuery 极大地简化了 JavaScript 编程. jQuery 很容易学习. 2.jQuery对象与D ...

  5. 【python自动化第六篇:面向对象】

    知识点概览: 面向对象的介绍 面向对象的特性(class,object)实例变量,类变量 面型对象编程的介绍 其他概念 一.面向对象介绍 编程范式:面向对象,面向过程,函数式编程 面向过程:通过一组指 ...

  6. 【python自动化第五篇:python入门进阶】

    今天内容: 模块的定义 导入方法 import的本质 导入优化 模块分类 模块介绍 一.模块定义: 用来在逻辑上组织python代码(变量,函数,逻辑,类):本质就是为了实现一个功能(就是以.py结尾 ...

  7. 【python自动化第四篇:python入门进阶】

    今天的课程总结: 装饰器 迭代器&生成器 json&pickle实现数据的序列化 软件目录结构规范 一.装饰器 装饰器的本质是函数,起目的就是用来为其它函数增加附加功能 原则:不能修改 ...

  8. Python 学习第十七天 jQuery

    一,jQuery 知识详解 利用jquery 查找元素,操作元素 1,jquery 引入 <!DOCTYPE html> <html lang="en"> ...

  9. Python自动化 【第九篇】:Python基础-线程、进程及python GIL全局解释器锁

    本节内容: 进程与线程区别 线程 a)  语法 b)  join c)  线程锁之Lock\Rlock\信号量 d)  将线程变为守护进程 e)  Event事件 f)   queue队列 g)  生 ...

  10. Python自动化 【第二篇】:Python基础-列表、元组、字典

    本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库, ...

随机推荐

  1. CPU利用率异常的分析思路和方法交流探讨

    CPU利用率异常的分析思路和方法交流探讨在生产运行当中,经常会遇到CPU利用率异常或者不符合预期的情况,此时,往往暗示着系统性能问题.那么究竟是核心应用的问题?是监控工具的问题?还是系统.硬件.网络层 ...

  2. AI(一):概念与资讯

    AI: Artificial Intelligence(人工智能),它是研究.开发用于模拟和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学,上个世纪50年代一次学术讨论会议上,下图中几位著 ...

  3. jquery特效大全

    http://www.oschina.net/project/tag/300/jquery-effects

  4. python3-day1-python简介及入门

    python简介及入门 python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为 ...

  5. Android SQLite 通配符查询找不到参数问题

    使用Android SQLite中SQLiteDatabase类的query方法查询时,如果where中包含通配符,则参数会无法设置,如类似下面的方法查询时 SQLiteDatabase db = d ...

  6. UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理

    一.字符编码简介 1. ASCII码 在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(by ...

  7. [Linux] 关于Centos6中ulimit nproc用户进程数的限制

    一.缘由: 在启动mongodb的时候,有Warning提示soft rlimits too low,就是用户使用进程数过小,遂调高系统资源关于用户最大进程数的限制ulimit -u. 先暂时使设置生 ...

  8. [转]-CSS 元素垂直居中的6种方法

    原文地址:http://blog.zhourunsheng.com/2012/03/css-%E5%85%83%E7%B4%A0%E5%9E%82%E7%9B%B4%E5%B1%85%E4%B8%AD ...

  9. lsyncd 实时同步

    1. 几大实时同步工具比较 1.1 inotify + rsync 最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是inotify + rsync,但随着文件数量的增大到100W+,目录下的 ...

  10. iOS5.0以上使用新浪微博开放平台OAuth 续(及解决登录无效问题)

    新浪微博开放平台为第三方应用提供了简便的合作模式,满足了手机用户和平板电脑用户随时随地分享信息的需求.通过调用平台的api即可实现很多微博上的功能. 本篇主要目的是记录新浪微博移动SDK iOS版本的 ...