jQuery针对各类元素操作基础教程


Posted in Javascript onAugust 29, 2014

本文实例讲述了jQuery针对元素的操作,包括基础操作、选择要操作的元素及处理DOM元素等。对jQuery的学习有很好的借鉴价值。分享给大家供大家参考之用。具体分析如下:

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'])如果单选框或复选框与数组中的元素匹配,则选中状态

相信本文所述对大家的jQuery程序设计有一定的借鉴价值。

Javascript 相关文章推荐
Jquery下判断Id是否存在的代码
Jan 06 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
Aug 01 Javascript
jquery实现初次打开有动画效果的网页TAB切换代码
Sep 06 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
jQuery插件ajaxfileupload.js实现上传文件
Oct 23 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
微信小程序 swiper组件详解及实例代码
Oct 25 Javascript
微信小程序 wxapp视图容器 view详解
Oct 31 Javascript
Javascript中的神器——Promise
Feb 08 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
Jul 17 Javascript
微信小程序实现底部弹出模态框
Nov 18 Javascript
jQuery事件用法实例汇总
Aug 29 #Javascript
laytpl 精致巧妙的JavaScript模板引擎
Aug 29 #Javascript
jQuery动画特效实例教程
Aug 29 #Javascript
jQuery实用函数用法总结
Aug 29 #Javascript
jQuery实现异步获取json数据的2种方式
Aug 29 #Javascript
原生javascript实现的分页插件pagenav
Aug 28 #Javascript
JavaScript判断变量是对象还是数组的方法
Aug 28 #Javascript
You might like
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
PHP处理Json字符串解码返回NULL的解决方法
2014/09/01 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
popdiv
2006/07/14 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
jQuery如何防止这种冒泡事件发生
2015/02/27 Javascript
js实现带圆角的两级导航菜单效果代码
2015/08/24 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
Vue 中 template 有且只能一个 root的原因解析(源码分析)
2020/04/11 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
浅谈Python中数据解析
2015/05/05 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python 读取指定文件夹下的所有图像方法
2018/04/27 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
对于Python深浅拷贝的理解
2019/07/29 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
Python判断字符串是否为合法标示符操作
2020/09/03 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
波兰化妆品和护肤品购物网站:eKobieca
2019/08/30 全球购物
请用Python写一个获取用户输入数字,并根据数字大小输出不同信息的脚本
2014/05/20 面试题
手机被没收检讨书
2014/02/22 职场文书
消防安全承诺书
2014/05/22 职场文书
群教班子对照检查材料
2014/08/26 职场文书
优秀家长事迹材料(2016推荐版)
2016/02/29 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
2007年老电脑安装win11会怎么样? 网友实测win11在老电脑运行良好
2021/11/21 数码科技