整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

day56:jQuery

生JS事件绑定例题

1、开关灯示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #d1{
            height: 400px;
            width: 400px;
            border-radius: 50%;
        }
        .bg_green{background-color: green}
        .bg_red{background-color: red}
    </style>
</head>
<body>
    <div id="d1" class="c1 bg_red bg_green"></div>
    <button id="d2">变色</button>
<script>
    let btnEle = document.getElementById('d2')
    let divEle = document.getElementById('d1')
    btnEle.onclick = function () {          //点击时调用事件句柄
        divEle.classList.toggle('bg_red')   //有则删除,无则添加
    }
</script>
</body>
</html>

2、input框获取焦点示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" value="hello world" id="d1">

<script>
    let iEle=document.getElementById('d1')  // 点击了后执行的操作(获取焦点)
    iEle.onfocus = function (){
        iEle.value =''  // 重新赋值为空
    }
    iEle.onblur = function (){  // 鼠标点击了其他地方执行的操作(移除焦点)
        iEle.value ='goodbye'
    }
</script>
</body>
</html>

3、input框实时刷新时间实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<input type="text" id="d1" style="display: block;height: 50px;width:200px">
<button id="d2">开始</button>
<button id="d3">结束</button>

<script>
    //4、创建一个变量t,用来存储定时器
    let t = null
    //1、 把要操作的标签生成对象
    let inputEle = document.getElementById('d1')
    let starEle = document.getElementById('d2')
    let endEle = document.getElementById('d3')
    //2、定义一个函数用于展示实时时间
    function showTime(){
        let time = new Date();  //  生成一个时间对象
        inputEle.value = time.toLocaleString()  //获取当前时间,并赋值给input标签
    }
    //3、给页面上的按钮绑定功能,一个开始,一个结束
    starEle.onclick = function (){
        if (!t){
            t=setInterval(showTime,1000)    //每点击一下就会生成一个定时器
        }
    }
    endEle.onclick = function (){
        clearInterval(t)    //只能清除一个定时器
        t = null
    }
</script>
</body>
</html>

4、省市联动

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<select name="" id="d1" >
    <option value="---请选择---" selected disabled>---请选择---</option>
</select>
<select name="" id="d2"></select>

<script>
    let proEle = document.getElementById('d1')
    let cityEle = document.getElementById('d2')
    //1、先模拟省市数据
    data={
        '江西':['南昌','九江','赣州','上饶'],
        '浙江':['杭州','义乌','绍兴','嘉兴'],
        '江苏':['南京','苏州','泰州','南通'],
        '广东':['广州','深圳','惠州','清远']
    };
    //2、for循获取到省
    for (let key in data){
        //2.1 将省信息做成一个个option标签,并添加到第一个select框中
        //1 创建option框
        let opEle = document.createElement('option')
        //2 设置value
        opEle.value = key
        //3 设置文本
        opEle.innerText = key
        //4 添加到第一个select中
        proEle.appendChild(opEle)
    }
    //3、设置文本域变化事件,使得再更换省的时候可以更新市
    proEle.onchange = function (){
        //先清空市select中所有的option
        cityEle.innerHTML = ''
        //先获取到用户选择的省
        let getPro = proEle.value
        //获取对应的市信息
        let getCity = data[getPro]
        //添加默认选择标签
        let oppEle = document.createElement('option')
        oppEle.innerText = '-请选择-'
        oppEle.setAttribute('selected','selected')
        oppEle.setAttribute('disabled','disabled')
        cityEle.appendChild(oppEle)
        //for循环所有的市,渲染到第二个select中
        for(let i=0;i<getCity.length;i++){
            //拿到市名
            let city = getCity[i]
            //创建标签
            let opEle = document.createElement('option')
            //设置文本
            opEle.innerText = city
            //设置值
            opEle.value = city
            //添加到第二个select中
            cityEle.appendChild(opEle)
        }
    }

</script>
</body>
</html>

jQuery

jQuery 是一个快速、小巧且功能强大的 JavaScript 库。它通过简化 JavaScript 编程,使开发人员能够更轻松地操作 HTML 文档、处理事件、执行动画效果以及处理 AJAX 请求等。

jQuery基本语法:

jQuery(选择器).action()
可以简写:jQuery() ===$()

基本选择器:

1. 元素选择器:使用元素名称选择 HTML 元素。例如:`$("p")` 会选择所有的 `<p>` 元素。

2. ID 选择器:使用元素的 ID 属性选择指定的元素。例如:`$("#myElement")` 会选择具有 ID 属性为 "myElement" 的元素。

3. 类选择器:使用元素的类名选择指定的元素。例如:`$(".myClass")` 会选择具有类名为 "myClass" 的元素。

4.属性选择器:使用元素的属性选择指定的元素。例如:$("[name='myName']") 会选择具有 name 属性值为 "myName" 的元素。

通过jQuery选择器获取到的对象都是jQuery对象,如需使用JavaScript代码对其进行操作的话,则需要转换成标签对象。

$("#myElement")[0]	//转成标签对象

同样,标签对象也可转成jQuery对象:

$(document.getElementByid('#myElement')) //转成jQuery对象

组合分组嵌套选择器:

jQuery也支持组合选择器:

$('div#d1')	//选择具有 id 属性为 "d1" 的 <div> 元素。
$('div.c1')	//选择具有 class 属性为 "c1" 的 <div> 元素。
... ...
$('div span')	//后代选择器,用于选择 <div> 元素内的所有 <span> 元素。
$('div>span')	//子元素选择器,用于选择 <div> 元素的直接子元素中的 <span> 元素。
$('div+span')	//相邻元素选择器,用于选择紧接在 <div> 元素后面的第一个 <span> 元素。
$('div~span')	//兄弟元素选择器,用于选择所有在 <div> 元素后出现的同级别的 <span> 元素。

基本筛选器:

在jQuery中,筛选器可以根据不同的条件来选择匹配的元素,从而实现对元素的精确控制和操作。

jQuery提供了许多基本筛选器,用于选择匹配指定条件的元素。以下是一些常用的基本筛选器:

- `:first`:选择第一个匹配的元素。

- `:last`:选择最后一个匹配的元素。

- `:even`:选择索引为偶数的元素(从0开始计数)。

- `:odd`:选择索引为奇数的元素(从0开始计数)。

- `:eq(index)`:选择索引为指定值的元素。

- `:gt(index)`:选择索引大于指定值的元素。

- `:lt(index)`:选择索引小于指定值的元素。

- `:header`:选择所有标题元素(如`<h1>`、`<h2>`等)。

- `:not(selector)`:选择不匹配给定选择器的元素。

- `:has(selector)`:选择包含匹配给定选择器的元素。

- `:contains(text)`:选择包含指定文本内容的元素。

$('ul li') #ul下面的所有li子标签
$('ul li:first') #ul下面的第一个li子标签 $('ul li').first()
$('ul li:last') #ul下面的最后一个li子标签 $('ul li').last()
$('ul li:eq(2)') #放索引,根据索引取值
$('ul li:even') #偶数索引,0包含在内
$('ul li:odd') #奇数索引
$('ul li:gt(2)') #大于索引
$('ul li:lt(2)') #小于索引
$('div:has("p")') #选举出包含一个标签,或多个标签在内的标签(父级)
$('ul li:not("#d1")') # 移除所有满足条件的标签

这些基本筛选器可以与其他选择器和方法组合使用,以便更精确地选择和操作网页中的元素。

表单筛选器:

特殊情况

筛选器方法:

介:

jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。jQuery设计的宗旨是“write Less,Do More”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。

关于jQuery开发教程的详细内容:(点击下方“了解更多”,记得收藏哦~)

(本课程可以帮助学员掌握jQuery开发技术,适合人群前端开发者学习)

jQuery 选择器:

允许您对元素组或单个元素进行操作。

3.1 元素选择器

使用 CSS 选择器来选取 HTML 元素。

3.2 属性选择器 [ ]

带有给定属性的元素。

$('[title]').hide();

改变 HTML 元素的 CSS 属性。

3.3 CSS 选择器

$('p').css('background-color', 'red');

语言特点:

  • 快速获取文档元素

jQuery的选择机制构建于Css的选择器,它提供了快速查询DOM文档中元素的能力,而且大大强化了JavaScript中获取页面元素的方式。

  • 提供漂亮的页面动态效果

jQuery中内置了一系列的动画效果,可以开发出非常漂亮的网页,许多网站都使用jQuery的内置的效果,比如淡入淡出、元素移除等动态特效。

  • 创建AJAX无刷新网页

AJAX是异步的JavaScript和ML的简称,可以开发出非常灵敏无刷新的网页,特别是开发服务器端网页时,比如PHP网站,需要往返地与服务器通信,如果不使用AJAX,每次数据更新不得不重新刷新网页,而使用AJAX特效后,可以对页面进行局部刷新,提供动态的效果。

  • 提供对JavaScript语言的增强

jQuery提供了对基本JavaScript结构的增强,比如元素迭代和数组处理等操作。

  • 增强的事件处理

jQuery提供了各种页面事件,它可以避免程序员在HTML中添加太事件处理代码,最重要的是,它的事件处理器消除了各种浏览器兼容性问题。

  • 更改网页内容

jQuery可以修改网页中的内容,比如更改网页的文本、插入或者翻转网页图像,jQuery简化了原本使用JavaScript代码需要处理的方式。

语言评价:

jQuery 是继prototype 之后又一个优秀的轻量级JavaScript 框架。其宗旨是———“Write Less, Do More”,写更少的代码,做更多的事情。 它是一个快速和简洁的JavaScript 库,可以简化HTML 文档元素的遍历,事件处理,动画和Ajax 交互以实现快速Web 开发,它被设计用来改变编写JavaScript 脚本的方式。

jQuery 的文档非常丰富,因为其轻量级的特性,文档并不复杂,随着新版本的发布,可以很快被翻译成多种语言,这也为jQuery 的流行提供了条件。jQuery 被包在语法上,jQuery 支持CSS1-3 的选择器, 兼容IE 6.0+, FF 2+,Safari 3.0+, Opera 9.0+, Chrome 等浏览器。同时,jQuery 有约几千种丰富多彩的插件,大量有趣的扩展和出色的社区支持,这弥补了jQuery功能较少的不足并为jQuery 提供了众多非常有用的功能扩展。加之其简单易学,jQuery 很快成为当今最为流行的JavaScript 库,成为开发网站等复杂度较低的Web 应用程序的首选JavaScript 库,并得到了大公司如微软,Google 的支持。

jQuery 最有特色的语法特点就是与CSS 语法相似的选择器,并且它支持CSS1 到CSS3 的几乎所有选择器,并兼容所有主流浏览器,这为快速访问DOM 提供了方便。

阿里云开发者社区全面升级,一站式体验,用得更爽:https://developer.aliyun.com?spm=a2c41.12958151.0.0(复制网址链接到浏览器,记得收藏)

好程序员web前端学习路线分享jQuery学习技巧,jQuery在web前端学习中是一个必不可少的内容,很多小伙伴都在学习这阶段的时候遇到问题,今天我们就来聊一下jQuery,让我们一起来看一看吧!

1、关于页面元素的引用

通过jquery的$引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。

2、jQuery对象与dom对象的转换

只有jquery对象才能使用jquery定义的方法。注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象。普通的dom对象一般可以通过$转换成jquery对象。

如:$(document.getElementById("msg"))则为jquery对象,可以使用jquery的方法。

由于jquery对象本身是一个集合。所以如果jquery对象要转换为dom对象则必须取出其中的某一项,一般可通过索引取出。

如:$("#msg")[0],$("div").eq(1)[0],$("div").get[1],$("td")[5]这些都是dom对象,可以使用dom中的方法,但不能再使用Jquery的方法。

以下几种写法都是正确的:

$("#msg").html;

$("#msg")[0].innerHTML;

$("#msg").eq(0)[0].innerHTML;

$("#msg").get(0).innerHTML;

3、如何获取jQuery集合的某一项

对于获取的元素集合,获取其中的某一项(通过索引指定)可以使用eq或get(n)方法或者索引号获取,要注意,eq返回的是jquery对象,而get(n)和索引返回的是dom元素对象。对于jquery对象只能使用jquery的方法,而dom对象只能使用dom的方法,如要获取第三个

元素的内容。

有如下两种方法:

$("div").eq(2).html;//调用jquery对象的方法

$("div").get(2).innerHTML;//调用dom的方法属性

4、同一函数实现set和get

Jquery中的很多方法都是如此,主要包括如下几个:

· $("#msg").html;//返回id为msg的元素节点的html内容。

· $("#msg").html("new content");

· //将“new content” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content

· $("#msg").text;//返回id为msg的元素节点的文本内容。

· $("#msg").text("newcontent");

· //将“new content” 作为普通文本串写入id为msg的元素节点内容中,页面显示new content

· $("#msg").height;//返回id为msg的元素的高度

· $("#msg").height("300");//将id为msg的元素的高度设为300

· $("#msg").width;//返回id为msg的元素的宽度

· $("#msg").width("300");//将id为msg的元素的宽度设为300

· $("input").val(");//返回表单输入框的value值

· $("input").val("test");//将表单输入框的value值设为test

· $("#msg").click;//触发id为msg的元素的单击事件

· $("#msg").click(fn);//为id为msg的元素单击事件添加函数

· 同样blur,focus,select,submit事件都可以有着两种调用方法

5、集合处理功能

· $.extend({

· min:function(a, b){return a < b?a:b; },

· max:function(a, b){return a > b?a:b; }

· });//为jquery扩展了min,max两个方法

· 使用扩展的方法(通过“$.方法名”调用):

· alert("a=10,b=20,max="+$.max(10,20)+",min="+$.min(10,20));

6、支持方法的连写

所谓连写,即可以对一个jquery对象连续调用各种不同的方法。

例如:

$("p").click(function{alert($(this).html)})

.mouseover(function{alert('mouseover event')})

.each(function(i){this.style.color=['#f00','#0f0','#00f'][i ]});

7、操作元素的样式

主要包括以下几种方式:

· $("#msg").css("background");//返回元素的背景颜色

· $("#msg").css("background","#ccc")//设定元素背景为灰色

· $("#msg").height(300);$("#msg").width("200"); //设定宽高

· $("#msg").css({color: "red", background:"blue" });//以名值对的形式设定样式

· $("#msg").addClass("select");//为元素增加名称为select的class

· $("#msg").removeClass("select");//删除元素名称为select的class

· $("#msg").toggleClass("select");//如果存在(不存在)就删除(添加)名称为select的class

8、完善的事件处理功能

Jquery已经为我们提供了各种事件处理方法,我们无需在html元素上直接写事件,而可以直接为通过jquery获取的对象添加事件。

如:

$("#msg").click(function{alert("good")})//为元素添加了单击事件

$("p").click(function(i){this.style.color=['#f00','#0f0','#00f'][i ]})

//为三个不同的p元素单击事件分别设定不同的处理

jQuery中几个自定义的事件:

(1)hover(fn1,fn2):一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法。当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。

//当鼠标放在表格的某行上时将class置为over,离开时置为out。

$("tr").hover(function{

$(this).addClass("over");

},

function{

$(this).addClass("out");

});

(2)ready(fn):当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。

$(document).ready(function{alert("Load Success")})

//页面加载完毕提示“Load Success”,相当于onload事件。与$(fn)等价

(3)toggle(evenFn,oddFn):每次点击时切换要调用的函数。如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。随后的每次点击都重复对这两个函数的轮番调用。

//每次点击时轮换添加和删除名为selected的class。

$("p").toggle(function{

$(this).addClass("selected");

},function{

$(this).removeClass("selected");

});

(4)trigger(eventtype):在每一个匹配的元素上触发某类事件。

例如:

$("p").trigger("click");//触发所有p元素的click事件

(5)bind(eventtype,fn),unbind(eventtype): 事件的绑定与反绑定

从每一个匹配的元素中(添加)删除绑定的事件。

例如:

$("p").bind("click",function{alert($(this).text);}); //为每个p元素添加单击事件

$("p").unbind;//删除所有p元素上的所有事件

$("p").unbind("click")//删除所有p元素上的单击事件

9、几个实用特效功能

其中toggle和slidetoggle方法提供了状态切换功能。

如toggle方法包括了hide和show方法。

slideToggle方法包括了slideDown和slideUp方法。

10、几个有用的jQuery方法

$.browser.浏览器类型:检测浏览器类型。有效参数:safari, opera,msie,mozilla。如检测是否ie:$.browser.isie,是ie浏览器则返回true。

$.each(obj,fn):通用的迭代函数。可用于近似地迭代对象和数组(代替循环)。

$.each([0,1,2], function(i, n){ alert( "Item #" + i + ": " + n );});

等价于:

vartempArr=[0,1,2];

for(vari=0;i

alert("Item#"+i+": "+tempArr[ i ]);

}

也可以处理json数据,如

$.each({ name: "John", lang: "JS" }, function(i, n){ alert("Name: " + i + ", Value: " + n ); });

结果为:

Name:name,Value:John

Name:lang,Value:JS

$.extend(target,prop1,propN):用一个或多个其他对象来扩展一个对象,返回这个被扩展的对象。这是jquery实现的继承方式。

如:

$.extend(settings,options);

//合并settings和options,并将合并结果返回settings中,相当于options继承setting并将继承结果保存在setting中。

var settings =$.extend({}, defaults, options);

//合并defaults和options,并将合并结果返回到setting中而不覆盖default内容。

可以有多个参数(合并多项并返回)

$.map(array,fn):数组映射。把一个数组中的项目(处理转换后)保存到到另一个新数组中,并返回生成的新数组。

如:

vartempArr=$.map( [0,1,2], function(i){ return i + 4; });

tempArr内容为:[4,5,6]

vartempArr=$.map( [0,1,2], function(i){ return i > 0 ? i + 1 : null; });

tempArr内容为:[2,3]

$.merge(arr1,arr2):合并两个数组并删除其中重复的项目。

如:$.merge( [0,1,2], [2,3,4] ) //返回[0,1,2,3,4]

$.trim(str):删除字符串两端的空白字符。

如:$.trim(" hello, how are you? "); //返回"hello,how are you? "

11、解决自定义方法或其他类库与jQuery的冲突

很多时候我们自己定义了$(id)方法来获取一个元素,或者其他的一些js类库如prototype也都定义了$方法,如果同时把这些内容放在一起就会引起变量方法定义冲突,Jquery对此专门提供了方法用于解决此问题。

使用jquery中的jQuery.noConflict;方法即可把变量$的控制权让渡给第一个实现它的那个库或之前自定义的$方法。之后应用Jquery的时候只要将所有的$换成jQuery即可,如原来引用对象方法$("#msg")改为jQuery("#msg")。