jQuery之基础核心

 
 

作者的热门手记

  • jQuery之基础核心(demo)

     

本文主要简单的介绍下jQuery一些基础核心,大致了解jQuery使用模式。适用于有HTML、CSS、javascript基础,又刚刚接触jQuery的初学者。(如有错误,请指正)
咱们从基础语法说起,
基础语法是:$(selector).action()

  • 美元符号$定义jQuery
  • 选择符(selector)“查询”和“查找” HTML 元素
  • jQuery 的 action() 执行对元素的操作

    $是什么?

    在jQuery程序中,基本上都是以“$”开头的,那么这个$到底是什么呢?调试一下就知道

    console.log(typeof $); //function

    实际上来说,一般后面带()都是函数,如

    test();

    是不是应该之前就有定义过这个函数

    function test(){
    //...
    }

    现在是不是就知道$是一个函数,那么也就是说$就是jQuery封装的一个函数。
    由于$本身就是jQuery的缩写,也就是说$和jQuery是等价的。如:

    console.log($===jQuery);    //true

    那么其实也可以用jQuery开头。

    强大的jQuery选择器

    接下来我们来了解一下selector,一直以来,jQuery强大的选择器使其广受青睐。jQuery选择器大致分为基本选择器、属性选择器、表单选择器、位置选择器、过滤选择器、用于结果集的选择器。

  • 基本选择器(仿CSS选择器,基本上能写CSS选择器,jQuery的基本选择器也掌握差不多)
$(*)    //获取所有元素
$('#div1') //获取ID名为div1的元素
...
  • 属性选择器(根据页面元素属性来获取)

    $("[href]") //获取所有带有 href 属性的元素
    $("[href='#']") //所有 href 属性的值等于 "#" 的元素
    ...
    • 表单选择器(根据表单type值来获取)

      $(":password")   // 获取type="password" 的 <input> 元素
      $(":button") //获取type="button" 的 <input> 元素
      ...
    • 位置选择器(根据页面元素在页面的位置来获取)
      $("ul li:first-child") //获取所以ul中第一个子元素li
      $("ul li:last-child") // 获取所以ul中最后一个子元素li
      ...
    • 过滤选择器(通过特定的过滤规则来筛选出所需的 元素)
      $(":empty") //获取无子(元素)节点的所有元素
      $("p:hidden") //获取所有隐藏的 <p> 元素
      ...
    • 用于结果集的选择器(通过jQuery方法传参来筛选所需的元素)
      $('div').has('span'); // 获取包含span元素的div元素
      $('div').first(); //获取第1个div元素
      ...

      想了解更多jQuery选择器请查阅jQuery API,这里就不一一列举。

方法函数化

上文提到$是jQuery封装的函数,那么$()是什么呢?

console.log($());  //Object

显而易见,$()是一个对象。$是jQuery封装的函数,那么$()也应该是jQuery对象。

console.log($() instanceof jQuery); //true

那么通过jQuery获取一个页面元素,也应该是jQuery对象。如获取页面上id名为p1的元素。

console.log($('#p1') instanceof jQuery); //true

在获取到页面元素以后,就可以对其进行某种操作了,也是action。在原生的JS中,我们要对元素进行操作是这样写的:

document.getElementById('p2').innerHTML="Perona";

那么在jQuery里面是不是可以这样写的:

$('#p3').html="Perona";//没任何效果

没有任何反应,这显然是不对。实际上,在jQuery里,执行操作很少用=,而是通过()传参来执行,前面提到凡是带()基本上就是一个函数,那么也就是说jQuery源码中应该有html()这个函数。那么现在我们试着传参来看看:

$('#p3').html('佩罗娜');

程序运行成功。这就是方法函数化。

取值与赋值

操作网页元素,最常见的需求是取值和赋值。
有趣的是,jQuery使用同一个函数,来完成取值(getter)和赋值(setter)。到底是取值还是赋值,由函数的参数决定。
如:

alert($('#div1').html());   //html()没有参数,表示取值
$('#div2').html("爱慕课");//html()有参数,表示赋值

需要注意的是,如果结果包含多个元素,那么赋值的时候,将对其中所有的元素赋值;取值的时候,则是只取出第一个元素的值(text()例外,它将取出所有元素的text内容)。

alert($('li').html());//当一组元素的时候,取值是一组中的第一个
$('li').html('佩罗娜');//当一组元素的时候,赋值是一组中的所有元素
alert($('li').text());

链式写法

前面提到$(selector)是jQuery对象,那么$(selector).action()执行完返回的又是什么呢?咱们调试一下:

console.log($('#div3').css('color', 'red'));//object
console.log($('#div3').css('color', 'red') instanceof jQuery);//true

返回的是object,还是一个对象。这是为什么呢?其实在执行action()操作的时候,我们得先获取元素对象后才可以调用action()。如果缺乏元素对象,代码就会报错,也就是说$().css('color', 'red');这种写法是错误的。我们得先获取元素对象,返回对象才可以调用action()。那么,也就是说,这个对象还是个jQuery对象。既然还是jQuery对象,那么是不是还可以接着调用action(),答案是肯定的。

console.log($('#div3').css('color', 'red').html('imooc'));//object
console.log($('#div3').css('color', 'red').html('imooc')instanceof jQuery);//true

这也正是jQuery的魅力之一,采用了链式写法,可以连续调用action(),大大简化代码。根据基本的语法采用链式写法,便衍生出这样的$(selector).action()…action()
如下面代码:

$('#div3').css('color', 'gold');
$('#div3').html('么么哒');

采用链式写法

$('#div4').css('color', 'gold').html('么么哒');

jQuery与原生JS

接下来咱们说说jQuery与原生JS的关系,首先知道jQuery 是一个 JavaScript 库,它在语法上是遵循原生JS的语法,也就是说jQuery与原生JS是可以共存的。但是两者之间并不能混用,不能在jQuery对象里调用JS的事件或方法,同样也不能在JS对象里调用jQuery的事件或方法。
js的写法

document.getElementById('btn1').onclick=(function(){
alert('么么哒');
});

jq的写法

$('#btn2').click(function(){
alert('慕女神');
});

错误的写法如:
在原生JS里调用jQuery的事件

document.getElementById('btn3').click(function(){
alert('慕女神');
});

在jQuery里调用原生JS的事件

 $('#btn4').onclick=(function(){
alert('么么哒');
});

正所谓“知其然知其所以然”,想要更好的学习掌握jQuery,不妨去看看源码。推荐去看看Aaron艾伦的jQuery源码解析。

jQuery之基础核心(demo)的更多相关文章

  1. 第一百六十三节,jQuery,基础核心

    jQuery,基础核心 一.代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起 始的.而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所 ...

  2. JQuery基础核心

    一.代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数,都是美元符号“$”来起始的. 而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页面元素选择或执 ...

  3. web前端基础——jQuery编程基础

    1 jQuery简介 jQuery是一个兼容多浏览器的JavaScript库,核心理念是write less,do more(写得更少,做得更多).它对JavaScript进行了封装,使开发更便捷,并 ...

  4. 第一百六十六节,jQuery,基础 DOM 和 CSS 操作,元素内容,元素属性,css和class,元素宽度高度、偏移、滚动条

    jQuery,基础 DOM 和 CSS 操作,元素内容,元素属性,css和class,元素宽度高度.偏移.滚动条 学习要点: 1.DOM 简介 2.设置元素及内容 3.元素属性操作 4.元素样式操作 ...

  5. 【学习笔记】jQuery的基础学习

    [学习笔记]jQuery的基础学习 新建 模板 小书匠  什么是jQuery对象? jQuery 对象就是通过jQuery包装DOM对象后产生的对象.jQuery 对象是 jQuery 独有的. 如果 ...

  6. 适应手机端的jQuery图片滑块动画DEMO演示

    在线预览 下载地址 实例代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...

  7. [DOM Event Learning] Section 3 jQuery事件处理基础 on(), off()和one()方法使用

    [DOM Event Learning] Section 3 jQuery事件处理基础 on(),off()和one()方法使用   jQuery提供了简单的方法来向选择器(对应页面上的元素)绑定事件 ...

  8. jQuery 插件基础

    jQuery 插件基础 翻译 How to Create a Basic Plugin 如果你需要在 jQuery 选择器上执行一系列重复操作, 这时候你需要编写 jQuery 插件. jQuery ...

  9. jquery插件开发基础入门

    jquery插件开发基础入门 入门 编写一个jquery插件开始于给jquery.fn加入新的功能属性,此处添加的对象属性的名称就是你的插件名称 jQuery.fn,myPlugin = functi ...

随机推荐

  1. <转载> UE4的Actor类C++简单尝试

    原文链接:   简书小小酥XX https://www.jianshu.com/p/2bcc80f0e789 一开始我用了一段时间UE4,发现如果用蓝图系统真的不太适合我的风格.因为之前一直都是用Un ...

  2. Saiku根据入参日期查询出对应的数据(二十)

    Saiku根据入参日期查询出对应的数据 之前好像有写过一篇博客关于saiku date range的,现在进一步更新啦!!! 这里的日期筛选会更完善一些,需要提供两个参数 开始日期与结束日期(star ...

  3. font awesome 页面小图标

    font awesome 页面小图标 前段时间做页面,从网上查找资料,发现了一个好用的工具,就是font awesome奥森图标,使用了一下,发现非常方便,而且很灵活,纯css编写,可以和bootst ...

  4. EFCore Owned Entity Types,彩蛋乎?鸡肋乎?之彩蛋篇

    EFCore Owned Entity Types的定义 EFCore Owned Entity Types的文档在这里:https://docs.microsoft.com/zh-cn/ef/cor ...

  5. JAVA同步锁机制 wait() notify() notifyAll()

    wait() notify() notifyAll() 这3个方法用于协调多个线程对共享数据的存取,所以必须在synchronized语句块中使用. wait() 必须在synchronized函数或 ...

  6. Python字符串与格式化的一点用法

    #python的基本语法网上已经有很多详细的解释了,写在这里方便自己记忆一些 1.python于C语言不同的是,python没有字符的概念,所谓的字符就是长度为1的字符串,使用切片或者索引同样可以对字 ...

  7. spring-data-mongodb与mongo shell的对应关系

    除了特殊注释外,本文的测试结果均基于 spring-data-mongodb:1.10.6.RELEASE(spring-boot-starter:1.5.6.RELEASE),MongoDB 3.0 ...

  8. jar包自动化部署---jenkins

    B.Application Server SVN账号:svn://192.168.1.49/svn/keenyoda-trunk/xxxxxcht=xxxxx 安装jenkins:安装目录:/usr/ ...

  9. linux-docker下安装禅道全部

    友情提示:按照步骤走,99%的人会安装成功,1%的人可以咨询度娘 64位电脑安装禅道,满足发送邮件功能 第一步: docker ps 查看docker中的容器是否有禅道(docker ps -a    ...

  10. python模块之json_pickle_shelve

    序列化:明显是json重要,并且应用场景多. #!/usr/bin/env python # coding:utf-8 import json ## 非常重要的模块,用于不同种编程语言间交换数据. d ...