jQuery基础知识小结


Posted in Javascript onDecember 22, 2014

1、基础

 jquery对象集:
  $():jquery对象集合

  获取jquery对象集中的元素:

   使用索引获取包装器中的javascript元素:var temp = $('img[alt]')[0]

   使用jquery的get方法获取jquery对象集中的javascript元素:var temp = $('img[alt]').get(0)

   使用jquery的eq方法获取jquery对象集中的jquery对象元素:
    $('img[alt]').eq(0)
    $('img[alt]').first()
    $('img[alt]').last()

  jquery对象集转换成javascript数组:
   var arr = $('label+button').toArray()label后面所有同级button元素,转换成javascript数组

  jquery对象集的索引:
   var n = $('img').index($('img#id')[0])注意:index()参数是javascript元素
   var n = $('img').index('img#id') 等同于上一行 找不到返回-1
   var n = $('img').index()img在同级元素中的索引

  向jquery对象集中添加更多的jquery对象集:   
   使用逗号:$('img[alt],img[title]')
   使用add方法:$('img[alt]').add('img[title]')

   对不同的jquery对象集中采取不同的方法:
    $('img[alt]').addClass('thickBorder').add('img[title]').addClass('');

   向jquery对象集中添加新创建的元素:
    $('p').add('<div></div>');

  删除jquery对象集中的元素:
   $('img[title]').not('[title*=pu]')
   $('img').not(function(){return !$(this).hasClass('someClassname')})
   过滤jquery对象集:
    $('td').filter(function(){return this.innerHTML.match(^\d+$)})过滤包含数字的td

   获取jquery对象集的子集
    $('*').slice(0,4)包含前4个元素的新的jquery对象集
    $('*').slice(4)包含前4个元素的新的jquery对象集
    $('div').has('img[alt]')

  转换jquery对象集中的元素
   var allIds = $('div').map(function(){
    return (this.id==undefined) ? null : this.id;
   }).get();通过get方法转换成javascript数组

  遍历jquery对象集中的元素
   $('img').each(function(n){
    this.alt = '这是第['+n+']张图片,图片的id是' + this.id;
   })
   $([1,2,3]).each(function(){alert(this);})

  使用元素间关系获取jquery对象集
   $(this).closest('div')比如触发的按钮在哪个div中发生
   $(this).siblings('button[title="Close"]')所有同级元素,不包含本身
   $(this).children('.someclassname')所有子节点元素,不包含重复子节点
   $(this).closest('')临近祖先元素
   $(this).contents()由元素内容组成的jquery对象集,比如可以获取<iframe>元素内容
   $(this).next('.someclassname')下一个同级元素
   $(this).nextAll()后面所有的同级元素
   $(this).nextUntil('.someclassname')后面所有的同级元素直到遇到目标元素
   $(this).offsetParent()离jquery对象集最近的父辈元素
   $(this).parent()直接父元素
   $(this).parents()所有父元素
   $(this).parrentsUntil()所有父元素,直到目标父元素
   $(this).prev()上一个同级元素
   $(this).prevAll()之前的所有同级元素
   $(this).prevTntl()之前的所有同级元素,直到目标元素

  其它获取jquery对象集的方式
   $(this).find(p span)

  判断是否是某个jquery对象集
   var hasImg = $('*').is('img');

 jquery方法:
  $().hide()
  $().addClass('')
  $().html('')
  $('a').size()元素数量

  jquery选择器:
   $('p:even')  
   $('tr:nth-child(1)')
   $('body > div')直接子元素
   $('a[href=$='pdf']')根据属性选择
   $(div:has(a))过滤

 jquery函数:
  $.trim()

 jquery执行时间:
  $(document).ready(function(){});
  $(function(){});

 创建DOM元素:
  $('<p></p>').insertAfter();
  $('<img>',{
   src: '',
   alt: '',
   title: '',
   click: function(){}
  }).css({
   cursor:'pointer',
   border:'',
   padding:'',
   backgroundColor:'white'
  }).append('');
 jquery扩展:
  $.fn.disable = function(){
   return this.each(function(){
     if(this.disabled != null) this.disabled = true;
   })
  };
  $('').disable();

 jquery测试元素是否存在:
  if(item)(){}else{} 宽松测试
  if(item != null) 推荐测试,能把null和undefined区别开
 

2、选择要操作的元素

 根据标签名:$('a')  
 根据id:$('#id')
 根据类名:$('.someclassname')
 满足多个条件:$('a#id.someclassname') 或 $('div,span')
 某个元素的所有子节点:$(p a.someclassname)
 某个元素的直接子节点:$(ul.myList > li)

 根据属性名:
  $(a[href^='http://']) 以...开头
  $(href$='.pdf')以...结尾
  $(form[method])包含method属性的form
  $(intput[type='text'])
  $(intput[name!=''])
  $(href*='some')包含

 某元素后的第一个元素:$(E+F)匹配的是F,F是E后面的第一个元素

 某元素后的某一个元素:$(E~F)匹配的是F,F是E后面的某一个元素

 通过位置:
  $(li:first)第一个li
  $(li:last)最后一个li
  $(li:even)偶数行li
  $(li:odd)奇数行li
  $(li:eq(n))第n个元素,索引从0开始
  $(li:gt(n))第n个元素之后的元素,索引从0开始
  $(li:lt(n))第n个元素之前的元素,索引从0开始
  $(ul:first-child)列表中的第一个li
  $(ul:last-child)列表中的最后一个li
  $(ul:nth-child(n))列表中的第n个li
  $(ul:only-child)没有兄弟li的ul
  $(ul:nth-child(even))列表中的偶数行li,odd为计数行li
  $(ul:nth-child(5n+1))列表中被5除余1的li

 通过过滤器:
  $(input:not(:checkbox))
  $(':not(img[src*="dog"])')
  $('img:not([src*="dog"])')
  $(div:has(span))
  $('tr:has(img[src$="pu.png"])')
  $(tr:animated)处于动画状态的tr
  $(input:button)包括type类型为button,reset,submit的Input
  $(input:checkbox)等同于$(input[type=checkbox])
  $(span:contains(food))包含文字food的span
  $(input:disabled)禁用
  $(input:enabled)启用
  $(input:file)等同于$(input[type=file])
  $(:header)h1到h6
  $(input:hidden)
  $(input:image)等同于$(input[type=image])
  $(:input)包括input, select, textarea, button元素
  $(tr:parent)
  $(input:password)等同于$(input[type=password])
  $(input:radio)等同于$(input[type=radio])
  $(input:reset)等同于$(input[type=reset])或$(button[type=reset])
  $('.clssname:selected')
  $(input:submit)等同于$(input[type=submit])或$(button[type=submit])
  $(input:text)等同于$(input[type=text])
  $(div:visible)

3、处理DOM元素  

 操作元素的属性:

  $('*').each(function(n){
   this.id = this.tagName + n;
  })
 

获取属性值:$('').attr('');

 设置属性值:

  $('*').attr('title', function(index, previousValue){
   return previousValue + ' I am element ' + index + ' and my name is ' + this.id;
  }) 为一个属性设置值
  $('input').attr({
   value: '',
   title: ''
  }); 为多个属性设置值

 删除属性:

  $('p').removeAttr('value');
 让所有链接都在新窗口中打开:
  $('a[href^="http://"]').attr('target',"_blank");

 避免表单多次提交:
  $("form").submit(function(){
   $(":submit", this).attr("disabled","disabled");
  })

 添加类名:$('#id').addClass('')

 删除类名:$('#id').removeClass('')

 切换类名:$('#id').toggleClass('')存在就删除类名,不存在就添加类名

 判断是否含有类名:$('p:first').hasClass('') $('p:first').is('')

 以数组形式返回类名列表:
  $.fn.getClassNames = function(){
   var name = this.attr('someclsssname');
   if(name != null){
    return name.split(" ");
   }
   else
   {
    return [];
   }
  }

 设置样式:
  $('div.someclassname').css(function(index, currentWidth){
   return currentWidth + 20;
  });
  $('div').css({
   cursor: 'pointer',
   border: '1px solid black',
   padding: '12px 12px 20px 20x',
   bacgroundColor: 'White'
  });

 有关尺寸:
  $(div).width(500)
  $('div').height()
  $('div').innerHeight()
  $('div').innerWidth()
  $('div').outerHeight(true)
  $('div').outerWidth(false)

 有关定位:
  $('p').offset()相对于文档的参照位置
  $('p').position()偏移父元素的相对位置
  $('p').scrollLeft()水平滚动条的偏移值
  $('p').scrollLeft(value)
  $('p').scrollTop()
  $('p').scrollTop(value)

 有关元素内容:
  $('p').html()
  $('p').html('')
  $('p').text()
  $('p').text('')

 追加内容
  在元素末尾追加一段html:$('p').append('<b>some text</b>');
  在元素末尾dom中现有的元素:$('p').append($(a.someclassname))
  在元素开头追加:$("p").prepend()
  在元素的前面追加:$("span").before()
  在元素的后面追加:$("span")after()
  把内容追加到末尾:appendTo(targets)
  把内容追加到开头:prependTo(targets)
  把内容追加到元素前面:insertBefore(targets)
  把内容追加到元素后面:$('<p></p>').insertAfter('p img');

 包裹元素:
  $('a.someclassname').wrap("<div class='hello'></div>")
  $('a.someclassname').wrap($("div:first")[0])
  $('a.someclassname').wrapAll()
  $('a.someclassname').wrapInner()
  $('a.someclassname').unWrap()

 删除元素:
  $('.classname').remove()删除元素,绑定到元素上的事件和数据也会被删除
  $('.classname').detach()删除元素,但保留事件和数据
  $('.classname').empty()不删除元素,但清空元素内容

 复制元素:
  $('img').clone().appendTo('p.someclassname')
  $('ul').clone().insertBefore('#id')

 替换元素:
  $('img[alt]').each(function(){
   $(this).replaceWith('<span>' + $(this).attr('alt') + '</span>');
  })
  $("p").replaceAll("<b></b>")

 关于表单元素的值:
  $('[name="radioGroup"]:checked').val()获取单选按钮的值,如果没有选中一个,返回undefined
  var checkboxValues = $('[name="checkboxGroup"]:checked').map(function(){
   return $(this).val();
  }).toArray(); 获取多选框的值

  对于<select id="list" multiple="multiple">使用$('#list').val()返回值的数组
  $('input').val(['one','two','three'])如果单选框或复选框与数组中的元素匹配,则选中状态

Javascript 相关文章推荐
新闻内页-JS分页
Jun 07 Javascript
splice slice区别
Oct 09 Javascript
jQuery编写widget的一些技巧分享
Oct 28 Javascript
window.location.href = window.location.href 跳转无反应 a超链接onclick事件写法
Aug 21 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
Aug 17 Javascript
javascript 取小数点后几位几种方法总结
Aug 02 Javascript
如何将你的AngularJS1.x应用迁移至React的方法
Feb 01 Javascript
webpack之引入图片的实现及问题
Oct 08 Javascript
Node.js使用supervisor进行开发中调试的方法
Mar 26 Javascript
React倒计时功能实现代码——解耦通用
Sep 18 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 Javascript
JavaScript异步操作中串行和并行
Nov 20 Javascript
jQuery异步获取json数据方法汇总
Dec 22 #Javascript
jQuery的观察者模式详解
Dec 22 #Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
Dec 22 #Javascript
sails框架的学习指南
Dec 22 #Javascript
了不起的node.js读书笔记之mongodb数据库交互
Dec 22 #Javascript
javascript动态创建及删除元素的方法
Dec 22 #Javascript
了不起的node.js读书笔记之例程分析
Dec 22 #Javascript
You might like
PHP开发大型项目的一点经验
2006/10/09 PHP
用PHP生成html分页列表的代码
2007/03/18 PHP
简单的PHP图片上传程序
2008/03/27 PHP
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php array_map()数组函数使用说明
2011/07/12 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
js 省地市级联选择
2010/02/07 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
javascript实现获取图片大小及图片等比缩放的方法
2016/11/24 Javascript
vue.js中v-on:textInput无法执行事件问题的解决过程
2017/07/12 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
开发用到的js封装方法(20种)
2018/10/12 Javascript
Vue实现购物车的全选、单选、显示商品价格代码实例
2019/05/06 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
解决ant design vue中树形控件defaultExpandAll设置无效的问题
2020/10/26 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
python接口调用已训练好的caffe模型测试分类方法
2019/08/26 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
python的flask框架难学吗
2020/07/31 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
2021/02/06 Python
美国折扣地毯销售网站:Rugs.com
2020/03/27 全球购物
自荐信不宜过于夸大
2013/11/06 职场文书
银行类自荐信
2014/02/04 职场文书
平安建设汇报材料
2014/12/29 职场文书
2015年南京大屠杀纪念日活动总结
2015/03/24 职场文书
Windows下使用Nginx+Tomcat做负载均衡的完整步骤
2021/03/31 Servers