jQuery 快速入门---对象的过滤与查找(四)

对象的过滤

eq() 获取第N个元素
first() 获取第一个元素
last() 获取最后一个元素
hasClass() 检查当前的元素是否含有某个特定的类,如果有,则返回true
filter() 筛选出与指定表达式匹配的元素集合
not() 删除与指定表达式匹配的元素
is() 根据选择器、DOM元素或 jQuery 对象来检测匹配元素集合,如果其中至少有一个元素符合这个给定的表达式就返回true
has() 保留包含特定后代的元素,去掉那些不含有指定后代的元素

var $li = $('ul>li');
// 1.ul下li标签第一个
// $li[0].style.backgroundColor = 'red';
$li.first().css('background-color', 'red');

// 2.ul下li标签的最后一个
// $li[$li.length - 1].style.backgroundColor = 'red';
$li.last().css('background-color', 'red');

// 3.ul下li标签的第二个
// $li[1].style.backgroundColor = 'red';
$li.eq(1).css('background-color', 'red');

// 4.ul下li标签中title属性为hello的
$li.filter('[title=hello]').css('background-color', 'red');

// 5.ul下li标签中title属性不为hello的
// $li.filter('[title!=hello]').css('background-color', 'red');
$li.not('[title=hello]').css('background-color', 'red');


// $li.filter('[title]').filter('[title!=hello]').css('background-color', 'red');
// $li.filter('[title!=hello]').filter('[title]').css('background-color', 'red');
$li.filter('[title][title!=hello]').css('background-color', 'red');

// 6.ul下li标签中有span子标签的
$li.has('span').css('background-color', 'red');

// 7.ul下li标签中class属性为box2的
// if ($li.filter('[class=box2]').hasClass('box2')) {
//     $li.filter('[class=box2]').css('background-color', 'red');
// }
if ($li.filter('[class=box2]').is('.box2')) {
    $li.filter('[class=box2]').css('background-color', 'red');
}

对象的查找

children() 取得一个包含匹配的元素集合中每一个元素的所有子元素的元素集合
find() 搜索所有与指定表达式匹配的元素。这个函数是找出正在处理的元素的后代元素的好方法
siblings() 取得一个包含匹配的元素集合中每一个元素的所有唯一同辈元素的元素集合
next() 取得一个包含匹配的元素集合中每一个元素紧邻的后一个同辈元素的元素集合
nextAll() 查找当前元素之后所有的同辈元素
nextUntil() 查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止
prev() 取得一个包含匹配的元素集合中每一个元素紧邻的前一个同辈元素的元素集合
prevAll() 查找当前元素之前所有的同辈元素
prevUntil() 查找当前元素之前所有的同辈元素,直到遇到匹配的那个元素为止
offsetParent() 返回第一个匹配元素用于定位的父节点
parent() 取得一个包含着所有匹配元素的唯一父元素的元素集合
parentsUntil() 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止

var $ul = $('ul');
// 1.ul标签的第2个span子标签
$ul.children('span:eq(1)').css('background-color', 'red');

// 2.ul标签的第2个span后代标签
$ul.find('span:eq(1)').css('background-color', 'red');

// 3.ul标签的父标签
$ul.parent().css('background-color', 'red');

// 3.ul标签的定位父标签
$ul.offsetParent().css('background-color', 'red');

// 4.id为cc的li标签的前一个li标签
$('#cc').prev('li').css('background-color', 'red');

// 4.id为cc的li标签的前面所有li标签
$('#cc').prevAll('li').css('background-color', 'red');

// 4.id为cc的li标签的后面所有li标签
$('#cc').nextAll('li').css('background-color', 'red');

// 6.id为cc的li标签的所有兄弟li标签
$('#cc').siblings('li').css('background-color', 'red');

练习

var $checkedAllBox = $('#checkedAllBox'); // ID选择器
var $items = $(':checkbox[name=items]'); // 表单选择器、过滤选择器、交集选择器
// 1.点击'全选':选中所有爱好
var $checkedAllBtn = $('#checkedAllBtn');
$checkedAllBtn.click(function () { // click函数
    $items.prop('checked', true); // prop操作属性
    $checkedAllBox.prop('checked', true);
});

// 2.点击'全不选':所有爱好都不勾选
var $checkedNoBtn = $('#checkedNoBtn');
$checkedNoBtn.click(function () {
    $items.prop('checked', false);
    $checkedAllBox.prop('checked', false);
});

// 3.点击'反选':改变所有爱好的匀选状态
var $checkedRevBtn = $('#checkedRevBtn');
$checkedRevBtn.click(function () {
    $items.each(function () { // each函数
        this.checked = !this.checked;
    });
    $checkedAllBox.prop('checked', $items.not(':checked').length === 0); // not过滤方法
});

// 4.点击'提交':提示所有勾送的爱好
var $sendBtn = $('#sendBtn');
$sendBtn.click(function () {
    var arr = [];
    $items.filter(':checked').each(function () { // filter过滤方法
        arr.push(this.value); // 数组push方法
    });
    alert(arr.join(',')); // 数组join方法
});

// 5.点击'全选/全不选':选中所有爱好,或者全不选中
var $checkedAllBox = $('#checkedAllBox');
$checkedAllBox.click(function () {
    $items.prop('checked', this.checked);
});

// 6.点击某个爱好时,必要时更新'全选/全不选'的选中状态
$items.click(function () {
    $checkedAllBox.prop('checked', $items.not(':checked').length === 0);
});

<form>
    你爱好的运动是?<input type="checkbox" id="checkedAllBox"/>全选/全不选
    <br/>
    <input type="checkbox" name="items" value="足球"/>足球
    <input type="checkbox" name="items" value="篮球"/>篮球
    <input type="checkbox" name="items" value="羽毛球"/>羽毛球
    <input type="checkbox" name="items" value="乒乓球"/>乒乓球
    <br/>
    <input type="button" id="checkedAllBtn" value="全选"/>
    <input type="button" id="checkedNoBtn" value="全不选"/>
    <input type="button" id="checkedRevBtn" value="反选"/>
    <input type="button" id="sendBtn" value="提交"/>
</form>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值