在jQuery中,选择元素是核心功能之一。jQuery的选择器基于CSS选择器语法,并扩展了更多功能,使得DOM元素的选择和操作变得简单高效。
// ID选择器
$('#elementId')
// 类选择器
$('.className')
// 元素选择器
$('div')
// 通配符选择器
$('*')
// 多选选择器
$('div, .class, #id')
// 后代选择器
$('parent child')
// 子元素选择器
$('parent > child')
// 相邻兄弟选择器
$('prev + next')
// 一般兄弟选择器
$('prev ~ siblings')
// 首元素
$('li:first')
// 尾元素
$('li:last')
// 非选择器
$('li:not(.exclude)')
// 偶数/奇数
$('tr:even')
$('tr:odd')
// 索引选择
$('li:eq(2)') // 第三个元素
$('li:gt(2)') // 索引大于2
$('li:lt(2)') // 索引小于2
// 包含特定文本
$('div:contains("text")')
// 可见/隐藏元素
$('div:visible')
$('div:hidden')
// 输入元素
$(':input')
// 文本框
$(':text')
// 单选按钮
$(':radio')
// 复选框
$(':checkbox')
// 提交按钮
$(':submit')
// 图像按钮
$(':image')
// 重置按钮
$(':reset')
// 按钮
$(':button')
// 文件上传
$(':file')
// 选中的
$(':checked')
// 选中的option
$(':selected')
// 禁用的
$(':disabled')
// 启用的
$(':enabled')
// 在某个元素内查找
$('#container').find('.item')
// 等价于
$('.item', '#container')
// 筛选出有特定类的元素
$('div').filter('.important')
// 筛选出符合函数的元素
$('div').filter(function(index) {
return $(this).css('color') === 'red';
})
// 直接子元素
$('#parent').children('.child')
// 后代元素
$('#parent').find('.descendant')
// 直接父元素
$('.child').parent()
// 所有祖先元素
$('.child').parents()
// 直到某个祖先
$('.child').parentsUntil('#ancestor')
// 下一个兄弟
$('.item').next()
// 前一个兄弟
$('.item').prev()
// 所有后续兄弟
$('.item').nextAll()
// 所有前面的兄弟
$('.item').prevAll()
// 直到某个兄弟
$('.item').nextUntil('.stop')
// 所有兄弟
$('.item').siblings()
原因:复杂的选择器或大量DOM遍历 解决:
// 不好的做法
$('.item').each(function() {
$(this).find('.child').doSomething();
});
// 好的做法
var $items = $('.item');
$items.find('.child').doSomething();
原因:
解决:
// 确保DOM加载完成
$(document).ready(function() {
// 选择器代码
});
// 检查选择器结果
if ($('.element').length) {
// 元素存在
}
原因:选择器只在初始DOM上执行 解决:使用事件委托
// 静态绑定
$('.btn').click(handler);
// 动态绑定(事件委托)
$(document).on('click', '.btn', handler);
jQuery的选择功能强大而灵活,掌握这些选择方法可以大大提高前端开发效率。