jQuery 实战读书笔记之第三章:操作 jQuery 集合
2018-06-24 01:21:38来源:未知 阅读 ()
创建新 HTML 元素
$('<div>Hello</div>'); /* 创建等价的空 div 元素 */ $('<div>'); $('<div />'); $('<div></div>'); /* 创建带属性的 图片元素 */ $('<img>', { src: '../images/little.bear.png', alt: 'Little Bear', title: 'I woof in your general direction', click: function(){ alert($(this).attr('title')); } }).appendTo('body');
管理 jQuery 集合
/* jQuery 允许把 jQuery 集合当做 JavaScript 数组进行处理,所以可以用简单的数组索引来读取集合中的元素。 */ var $imgAlt = $('img[alt]'); console.log('数组长度为:' + $imgAlt.length); var firstImgAlt = $('img[alt]')[0]; //获取到的是一个原始的 DOM 元素 console.log('返回第一个元素:'); console.log(firstImgAlt); /* 使用 get([index]) 方法 */ var imageElement = $('img[alt]').get(0); //和上面的用索引读取的代码效用一致 /* 使用负数做索引,就会从集合尾部开始计算。-1 查找倒数第一个元素 */ var lastImageElement = $('img[alt]').get(-1); console.log('返回最后一个元素:'); console.log(lastImageElement); /* 没有索引参数,那么返回的就是 JavaScript 数组 */ var imageArray = $('img[alt]').get(); console.log(imageArray); /* 想获得一个包含特定元素的 jQuery 对象,而不是原始对象 */ console.log('获取同一个特定元素(作为 jQuery 对象而不是原始对象)的三种写法的结果:'); var $obj1 = $($('img[alt]').get(2)); console.log($obj1 instanceof jQuery); //判断是否为 jQuery 对象 console.log($obj1); var $obj2 = $('img[alt]:eq(2)'); console.log($obj2); var $obj3 = $('img[alt]').eq(2); //推荐使用这种方法,使用 eq() 方法的性能比使用 :eq 筛选器的性能高,返回包含一个或多个元素的 jQuery 集合 console.log($obj3); /* first() 函数,对比 :first 筛选器 */ var $firstObj = $('img[alt]').first(); console.log('first() 函数:'); console.log($firstObj); /* last() 函数,对比 :last 筛选器 */ var $lastObj = $('img[alt]').last(); console.log('last() 函数:'); console.log($lastObj); /* 作为数组返回 DOM 元素的集合 */ var allPUL = $('p + ul').toArray(); //返回 ul 标签,且 ul 标签紧邻的兄弟节点为 p 标签 console.log('toArray 返回 DOM 元素数组集合:') console.log(allPUL); /* index() 函数,获取索引,索引从 0 开始 */ var index = $('.levels > li').index($('#li2')); console.log('#li2 的索引是(以对应的 jQuery 对象作为参数): ' + index); index = $('.levels > li').index(document.getElementById('li2')); console.log('#li2 的索引是(以对应的 JavaScript 对象作为参数): ' + index); index = $('.levels > li').index('#li2'); console.log('#li2 的索引是(以对应的 selector 作为参数): ' + index); //结果为 -1,传 selector 字符串作为参数不可以吗??? index = $('#li3').index(); console.log('无参 index() 方法返回的 #li3 的 index:' + index); index = $('.levels > li[data-level=4]').index(); console.log('无参 index() 方法返回的.leves > li[data-level=4] 的 index:' + index); /* 使用关系获取集合 */ /* 返回集合中所有元素的祖先,既包含直接父节点也包含更高层的祖先节点,但是不包含文档根节点(document),但选中的祖先节点只会出现一次 */ var $parents = $('#hibiscus').parents(); console.log('id为 #hibiscus 的所有祖先节点:'); console.log($parents); /* 通过 parents(selector) 对返回的祖先节点进行筛选 */ $parents = $('#hibiscus').parents('div'); console.log('id为 #hibiscus 的所有祖先节点且节点标签为 div:'); console.log($parents); /* 返回集合中所有元素的直接父节点元素,重复的父节点元素只返回一次 */ var $parent = $('img, li').parent(); console.log('"img, li" 的父元素:'); console.log($parent); /* 返回集合中所有元素的子元素,参数 selector 可以用于筛选 返回的是直接子元素 */ var $bodyChildren = $('body').children(); console.log('body 的所有子元素,不包括文本节点:') console.log($bodyChildren); /* children() 方法不返回文本节点,要处理文本节点使用 contents() 方法,参数 selector 可以用于筛选 */ var $bodyContent = $('body').contents(); console.log('body 的所有子元素,包括文本节点:') console.log($bodyContent); /* 搜索遍历集合中的所有元素的子节点(深度优先算法) */ var $set = $('#sample-dom').find('[title]'); console.log('find() 方法深度优先搜索:'); console.log($set); /* 返回集合中的直接兄弟节点 如果是最后一个节点,那么返回的集合长度为0 */ var $nextImg = $('#hibiscus').next(); console.log('next() 方法返回集合中的直接兄弟节点:'); console.log($nextImg); var $nextAllImg = $('#hibiscus').nextAll(); console.log('nextAll() 方法返回集合中的所有兄弟节点:'); console.log($nextAllImg); /* 返回集合中的前直接兄弟节点 如果是第一个节点,那么返回的集合长度为0 */ var $prevImg = $('#cozmo').prev(); console.log('prev() 方法返回集合中的前直接兄弟节点:'); console.log($prevImg); /* 返回的集合可以注意下顺序,是从下往上 */ var $prevAllImg = $('#cozmo').prevAll(); console.log('prevAll() 方法返回集合中的前所有兄弟节点:'); console.log($prevAllImg); /* 返回集合中元素的兄弟节点 */ var $siblings = $('#cozmo').siblings(); console.log($siblings); /* 集合中添加新元素 add(selector[, context]): selector 参数可以是包含选择器的字符串、HTML 片段、DOM 元素、DOM 元素数组或者 jQuery 对象 */ $('img[alt]').addClass('red-border').add('img[title]').addClass('opaque'); /* 删除集合元素 使用 not() 方法链式调用选择器来剔除某些元素 not(selector):创建不包含选择器 selecotr 参数匹配元素的新集合,注意这里是把符合条件的筛选去掉了 */ var $not = $('img[title]').not('[title*="puppy"]'); //等同的单个选择器 img[title]:not([title*='puppy']) console.log('not 方法:'); console.log($not); /* not() 方法中传入函数,用于复杂的或者无法用单个选择器表达式描述的情况 符合函数条件的会被筛选掉 */ var $notWithFunction = $('div').not(function(index){ return $(this).children().length > 2 && index % 2 === 0; }); console.log('not() 方法中传入函数:'); console.log($notWithFunction); /* filter(selector) 方法和 not(selector) 方法相反,符合条件的会被筛选出来 */ var $filtered = $('td').filter(function(){ return this.innerHTML.match(/^\d+$/); }); console.log('filter() 方法返回只包含纯数字的 td :'); console.log($filtered);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Jquery插件写法笔记整理 2020-03-29
- 基于JQuery的多标签实现代码 2020-03-29
- 关于jQuery UI 使用心得及技巧 2020-03-29
- Jquery图形报表插件 jqplot简介及参数详解 2020-03-25
- jQuery插件开发全解析 2020-03-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash