Skip to content

第3章:jQuery 核心语法与选择器(核心中的核心)

3.1 jQuery 核心语法结构($(selector).action(),牢记格式)

jQuery的核心语法结构非常简洁明了,遵循$(selector).action()的格式:

  • $:jQuery的别名,用于选择元素
  • (selector):选择器,用于定位DOM元素
  • .action():方法,对选中的元素执行操作

语法示例:

javascript
// 选择id为btn的元素,并绑定点击事件
$('#btn').click(function() {
    // 执行操作
});

// 选择class为item的元素,并修改样式
$('.item').css('color', 'red');

// 选择所有p元素,并修改文本内容
$('p').text('新文本');

链式调用:

jQuery支持方法链式调用,可以在一个语句中执行多个操作:

javascript
// 链式调用示例
$('#btn')
    .text('点击我')
    .css('background-color', 'blue')
    .click(function() {
        alert('按钮被点击了');
    });

3.2 美元符号 $ 的含义(jQuery的别名,与jQuery关键字等价)

$是jQuery的别名,与jQuery关键字完全等价。在jQuery库中,$被定义为jQuery的简写形式。

示例:

javascript
// 使用$符号
$('#id').text('内容');

// 使用jQuery关键字(与上面等价)
jQuery('#id').text('内容');

解决$冲突:

如果页面中其他库也使用了$符号,可能会导致冲突。此时可以使用jQuery.noConflict()方法解决:

javascript
// 释放$的控制权
const jq = jQuery.noConflict();

// 使用jq代替$
jq('#id').text('内容');

3.3 基础选择器(高频使用,重点掌握)

ID选择器(#id):选中单个元素

  • 语法$('#id')
  • 作用:根据元素的id属性选中单个元素
  • 示例
    javascript
    // 选中id为header的元素
    $('#header').css('background-color', 'gray');

类选择器(.class):选中多个同类元素

  • 语法$('.class')
  • 作用:根据元素的class属性选中多个元素
  • 示例
    javascript
    // 选中所有class为item的元素
    $('.item').css('color', 'blue');

元素选择器(element):选中指定标签元素

  • 语法$('element')
  • 作用:根据HTML标签名选中元素
  • 示例
    javascript
    // 选中所有p元素
    $('p').text('新文本');

通配符选择器(*):选中所有元素(慎用)

  • 语法$('*')
  • 作用:选中页面中的所有元素
  • 注意:性能较差,尽量避免使用
  • 示例
    javascript
    // 选中所有元素
    $('*').css('box-sizing', 'border-box');

组合选择器(多选择器组合,如#id .class)

  • 语法$('selector1, selector2, selector3')
  • 作用:同时选中多个不同类型的元素
  • 示例
    javascript
    // 同时选中id为header、class为item和所有p元素
    $('#header, .item, p').css('margin', '10px');

3.4 层级选择器(按DOM层级选择,常用)

后代选择器(parent child):选中父元素下所有后代

  • 语法$('parent child')
  • 作用:选中父元素下的所有后代元素(包括直接子元素和嵌套的子元素)
  • 示例
    javascript
    // 选中ul下的所有li元素
    $('ul li').css('list-style', 'none');

子选择器(parent > child):选中父元素下直接子元素

  • 语法$('parent > child')
  • 作用:只选中父元素的直接子元素,不包括嵌套的子元素
  • 示例
    javascript
    // 只选中ul的直接子元素li
    $('ul > li').css('color', 'red');

相邻兄弟选择器(prev + next):选中相邻的下一个元素

  • 语法$('prev + next')
  • 作用:选中紧邻在prev元素后面的next元素
  • 示例
    javascript
    // 选中h1后面紧邻的p元素
    $('h1 + p').css('font-weight', 'bold');

3.5 过滤选择器(筛选指定元素,简化操作)

基本过滤(:first、:last、:eq(index)、:odd、:even)

  • :first:选中第一个元素

    javascript
    // 选中第一个p元素
    $('p:first').css('color', 'red');
  • :last:选中最后一个元素

    javascript
    // 选中最后一个p元素
    $('p:last').css('color', 'blue');
  • :eq(index):选中指定索引的元素(索引从0开始)

    javascript
    // 选中第二个p元素(索引为1)
    $('p:eq(1)').css('color', 'green');
  • :odd:选中索引为奇数的元素

    javascript
    // 选中索引为奇数的tr元素
    $('tr:odd').css('background-color', '#f2f2f2');
  • :even:选中索引为偶数的元素

    javascript
    // 选中索引为偶数的tr元素
    $('tr:even').css('background-color', '#ffffff');

内容过滤(:empty、:contains(text))

  • :empty:选中没有子元素和文本内容的元素

    javascript
    // 选中空的div元素
    $('div:empty').css('height', '20px');
  • :contains(text):选中包含指定文本的元素

    javascript
    // 选中包含"jQuery"文本的p元素
    $('p:contains("jQuery")').css('color', 'red');

可见性过滤(:visible、:hidden)

  • :visible:选中可见的元素

    javascript
    // 选中可见的div元素
    $('div:visible').css('border', '1px solid red');
  • :hidden:选中隐藏的元素

    javascript
    // 选中隐藏的div元素
    $('div:hidden').show();

3.6 实操案例:用不同选择器选中页面元素,验证效果

案例:选择器练习

HTML结构:

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery选择器练习</title>
    <style>
        .item { margin: 10px; padding: 10px; border: 1px solid #ccc; }
        .highlight { background-color: yellow; }
    </style>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <div id="container">
        <h1>选择器练习</h1>
        <div class="item">项目1</div>
        <div class="item">项目2</div>
        <div class="item">包含jQuery的项目</div>
        <div class="item"></div> <!-- 空元素 -->
        <ul>
            <li>列表项1</li>
            <li>列表项2</li>
            <li>列表项3</li>
        </ul>
    </div>
    <button id="testBtn">测试选择器</button>
    
    <script>
        $(document).ready(function() {
            $('#testBtn').click(function() {
                // 测试ID选择器
                $('#container').css('border', '2px solid blue');
                
                // 测试类选择器
                $('.item').css('border-color', 'green');
                
                // 测试元素选择器
                $('h1').css('color', 'red');
                
                // 测试后代选择器
                $('#container li').css('list-style', 'none');
                
                // 测试子选择器
                $('#container > .item').addClass('highlight');
                
                // 测试基本过滤选择器
                $('.item:first').css('font-weight', 'bold');
                $('.item:last').css('font-style', 'italic');
                $('.item:eq(1)').css('color', 'purple');
                
                // 测试内容过滤选择器
                $('.item:contains("jQuery")').css('text-decoration', 'underline');
                $('.item:empty').css('background-color', 'gray');
            });
        });
    </script>
</body>
</html>

测试步骤:

  1. 保存文件为selector-practice.html
  2. 用浏览器打开该文件
  3. 点击"测试选择器"按钮
  4. 观察页面元素的变化,验证各种选择器的效果

3.7 新手易错点:选择器语法错误、选中不到元素的排查方法

常见错误:

  1. 选择器语法错误

    • 忘记添加#或.前缀
    • 选择器拼写错误
    • 层级选择器语法错误
  2. 选中不到元素

    • DOM未加载完成
    • 选择器与元素不匹配
    • 元素在iframe中
    • 动态生成的元素

排查方法:

  1. 检查选择器语法

    • 确认选择器格式正确
    • 使用浏览器开发者工具检查元素
  2. 检查DOM加载

    • 确保代码在入口函数内
    • 检查元素是否在代码执行时已存在
  3. 使用console.log调试

    javascript
    // 检查选择器是否选中元素
    console.log('选中元素数量:', $('.nonexistent').length);
    
    // 打印选中的元素
    console.log('选中的元素:', $('.item'));
  4. 检查动态元素

    • 使用事件委托
    • 在元素生成后再绑定事件
  5. 检查iframe

    • 需要先获取iframe的内容文档
    javascript
    const iframe = $('#myiframe')[0];
    const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
    const iframeElement = $(iframeDoc).find('.element');

实例:排查选择器问题

javascript
$(document).ready(function() {
    // 检查DOM是否加载完成
    console.log('DOM加载状态:', document.readyState);
    
    // 检查选择器是否正确
    const $element = $('#myElement');
    console.log('选中元素:', $element);
    console.log('元素数量:', $element.length);
    
    // 如果未选中元素,检查元素是否存在
    if ($element.length === 0) {
        console.log('元素不存在,请检查选择器或DOM结构');
    } else {
        // 执行操作
        $element.text('找到元素了!');
    }
});

© 2026 编程马·菜鸟教程 版权所有