Jquery入门
支持链式操作
$(‘.c1‘).addClass(‘c2‘).text(‘xxx‘).addClass(‘xxx‘).css({‘color‘:‘white‘});
jquery引入方式
外部网址引入
<!--<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>-->
本地文件引入
<script src="jquery.js"></script> //jquery.js本地文件路径
jquery对象与原生js中dom对象区别
jquery:
var d1 = $(‘#d1‘)
dom:
var a = document.getElementById(‘d1‘)
两者之间不能调用互相的方法
两者之间可以互相转换
- dom对象---->jquery对象 $(dom对象)
$(document.getElementById(‘d1‘));
- jquery对象----->dom对象 jquery对象[0]
$(‘#d1‘)[0]
选择器
id选择器
- $(‘#d1‘)
类选择器
- $(‘.c1‘)
元素选择器
- $(‘div‘)
组合选择器
- $(‘#d1,.c2‘);
多个选择器中间用逗号隔开 - 可以直接连着设置css样式
$(‘#d1,.c2‘).css(‘background-color‘,‘pink‘); - 当直接用下标取值时,是dom对象
var a = $(‘#d1,.c2‘);
a[0] - jquery对象需要用eq来取下标
var a = $(‘#d1.c2‘);
a.eq(1); - 层级选择器
(就是后代选择器)- $(‘div span‘);
自定义属性选择器
- 如在span标签中自定义了 xx=‘x1‘的属性
$(‘[xx]‘).css(‘color‘,‘red‘);
$(‘[xx="x1"]‘).css(‘color‘,‘green‘);
上面是两种自定义属性设置样式时的方法
表单对象属性选择器
- :checked
- 找到默认被选中的标签
- :selected
- 下拉框找到默认被选中的标签
- :disabled
- 找到被废弃的标签
- :enabled
- 找到可用的标签
表单选择器
- $(‘:text‘);
找到所有input标签
type=“text”标签 - $(‘:input‘);
找到所有input标签 - $(‘:password‘);
找到所有input标签
中type=“password”标签 - $(":radio");
找到所右input标签中
type="radio"标签 - $(":checkbox")
找到所有input标签中
type="checkbox"标签
筛选器方法
- parent()
找到父系- var a = $(‘.c1‘);
a.parent()
- var a = $(‘.c1‘);
- parents()
找到直系的祖父辈- var a = $(‘.c1‘);
a.parents()
- var a = $(‘.c1‘);
- parentUntil("body");
参数为要找到的父系为止
不包括参数- var a = $(‘.c1‘);
a.parentsUntil(‘body‘)
- var a = $(‘.c1‘);
- children()
找到所有的儿子标签- var a = $(‘ul‘);
a.children()
- var a = $(‘ul‘);
- children(".c1")
找到符合参数的儿子标签- var a = $(‘ul‘);
a.children(‘.c1‘);
- var a = $(‘ul‘);
- next()
找到下一个兄弟标签- var a = $(‘.c1‘);
a.next()
- var a = $(‘.c1‘);
- nextAll()
找到下面的所有兄弟标签- var a = $(‘.c1‘);
a.nextAll()
- var a = $(‘.c1‘);
- nextUntil(‘.c2’)
下面到某个兄弟为止,不包含那个兄弟- var a = $(‘.c1‘);
a.nextUntil(‘.c2‘);
- var a = $(‘.c1‘);
- prev()
找到上一个兄弟标签- var a = $(‘.c1‘);
a.prev();
- var a = $(‘.c1‘);
- prevAll()
找到上面所有兄弟标签
顺序是反的- var a = $(‘.c1‘);
a.prevAll();
- var a = $(‘.c1‘);
- prevUntil(参数)
直到找到指定参数的兄弟标签为止
不包含参数兄弟- var a = $(‘.c2‘);
a.prevUntil(.c1);
- var a = $(‘.c2‘);
- siblings()
找到不包含自己的所有兄弟- var a = $(‘.c2‘);
a.siblings();
- var a = $(‘.c2‘);
- siblings(参数)
筛选兄弟中有指定参数的标签- var a = $(‘.c2‘);
a.siblings(‘.c1‘);
- var a = $(‘.c2‘);
- find()
找后代- $(‘ul‘).find(‘span‘);
- 等同于css的 li span选择器
- $(‘ul‘).find(‘span‘);
- first()和last() 和eq(索引值)
- $(‘li‘).first()
- 找所有li标签中第一个
- $(‘li‘).last()
- 找所有li标签中最后一个
- $(‘li‘).eq(0)
- 按照指定索引取对应标签
- $(‘li‘).eq(-1)
- 取最后一个
- $(‘li‘).first()
text()和html()区别
取文本
- c.text()
- 不带标签
- c.html()
- 带标签
设置文本
-
c.text(‘文本‘)
-
c.html("文本")
-
文本内容
<a href=‘‘>皇家赌场</a>
-
类值class和val值操作
class类值操作
- 给标签中的类添加值
- var a = $(‘div‘);
a.addClass(‘c2‘);
- var a = $(‘div‘);
- 移除标签中类值
- var a = $(‘div‘);
a.removeClass(‘c2‘);
- var a = $(‘div‘);
- 有就添加没有就删除
- var a = $(‘div‘);
a.toggleClass(‘c2‘);
- var a = $(‘div‘);
- 示例计时器
- var a = $(‘div‘);
setInterval(‘a.toggleClass("c2")‘,500)
- var a = $(‘div‘);
val值操作
- 获取值
- 获取文本输入框的输入的值
- $(‘#username‘).val();
- 单选radio框,被选中的值
- $(‘.c1:checked‘).val();
- 在.a1选择器的基础上在进行筛选
- 多选checkbox框
- 不能直接就用val来取值
- 需要用for循环来
- var a = $(‘:checkbox:checked‘)
for (var i=0;i<a.length;i++){
console.log(a.eq(i).val())
}
- var a = $(‘:checkbox:checked‘)
- 单选select下拉框
- $(‘#s1‘).val()
- 多选select下拉框
- $("#s2").val()
- 获取文本输入框的输入的值
- 设置值
像单选多选之类
设置值的时候全部用列表- 文本输入框
- $(‘#username‘).val(‘you love me‘)
- 单选框
- $(‘.c1‘).val([2])
注意内容必须是列表,
写的是value属性对应的值
- $(‘.c1‘).val([2])
- 多选框
- $(‘.c2‘).val([‘2‘,‘3‘])
单选或者多选设置值的时候,
值可以是字符串,可以是数字
- $(‘.c2‘).val([‘2‘,‘3‘])
- 单选下拉框
- $(‘#s1‘).val(‘1‘)
- 多选下拉框
- $(‘#s2‘).val([‘2‘,‘3‘])
- 文本输入框
创建或添加标签的两种方式
添加标签但是这个属于替换内容,
将标签内原来的内容全部替换掉.
-
$(‘.c1‘).html(‘<a href=‘http://www.baidu,com‘>百度</a>‘)
在body标签创建标签或在其他标签中添加标签
$(‘<a>‘,{
href:‘http://www.baidu.com‘
text:‘这是一个标签‘,
name:‘baidu‘,
id:‘d1‘,
class:‘c1‘
}).appendto(‘div‘);
在div标签中添加一个a标签
```
$(‘<a>‘,{
href:‘http://www.baidu.com‘
text:‘这是一个标签‘,
name:‘baidu‘,
id:‘d1‘,
class:‘c1‘
}).appendto(‘body‘);
在body标签中创建一个a标签
## 文档操作
### 标签内部的后面添加内容append
- 方式1
1.var a = document.createElement(‘a‘)
2.a.href=‘http://www.baidu,com‘
3.a.innerText = ‘京东‘
$(‘.c1‘).append(a)
- 方式2常用
```html
$(‘.c1‘).append(‘<a href="http://www.baidu.com">百度</a>‘)
标签内部的上面添加内容prepend
-
$(‘.c1‘).prepend(‘<a href="">京东</a>‘)
标签外部的下面插入内容after
-
$(‘.c1‘).after(‘<a href="">淘宝</a>‘)
标签外部的上面插入内容before
-
$(‘.c1‘).before(‘<h1>大兄弟</h1>‘)
清空标签
方式1:
$(‘.c1‘).empty() 标签还存在
可以清空嵌套标签里面的单个标签。
也可以清空嵌套标签外层的标签,
会把里面嵌套的标签也同时清空。
方式2
$(‘.c1‘).html(‘‘);
$(‘.c1‘).text(‘‘);
删除标签
$(‘c1‘).remove();
删除单个标签。
要是删除的是最外层含有
嵌套的标签,里面的标签
同时也会被删除
字符占位符${变量名}
语法必须要用··符号table键上面那个符号
var username = ‘刘伟‘;
var s = my name is ${username}
;
attr/removeAttr属性操作
原生js属性操作
获取属性对应的值:dEle.getAttribute(‘placeholder‘);
添加属性或修改属性 : dEle.setAttribute(‘xx‘,‘oo‘);
删除属性:dEle.removeAttribute(‘xx‘);
jquery属性操作
- 添加或修改属性
- 单个属性
$(‘#d1‘).attr({‘xx‘:‘oo‘}) - 多个属性
$(‘#d1‘).attr({‘xx‘:‘oo‘,‘bb‘:‘dd‘})
- 单个属性
- 查看属性
- $(‘#d1‘).attr(‘xx‘)
- 删除属性
- $(‘#d1‘).removeAttr(‘xx‘)
- 这些属性操作针对的是自定义属性和标签自带属性,都可以通过attr来进行操作,但是有些特殊属性,通过attr来进行操作的时候,会导致操作失效,就他们几个:selected checked disabled enabled
prop属性操作
主要是操作
selected checked disabled enabled
设置属性
四个类型都是这样设置
- $(‘#d1‘).prop(‘checked‘,true) 选中
- $(‘d1‘).prop(‘checked‘,false) 取消选中
查看属性
- $(‘#d1‘).prop(‘checked‘)
true表示选中了,false表示未选中
逻辑运算符
and &&
or ||
not !
克隆
$(‘#d1‘).clone()
永远基于第一个克隆
$(‘#d1‘).clone(true);
点击哪个都能继续克隆
事件
两种绑定方式
- 方式1
$(‘#d1‘).click(function(){
var a =$(this).clone(true)
$(this).after(a);
})
- 方式2
$(‘#d1‘).on(‘click‘,function(){
var a = $(this).clone(true)
$(this).after(a);
})
on关键字进行绑定,
第一个参数为事件名称,
第二个参数是函数,事件要做的事情
事件冒泡:
点击儿子标签会触发
父级标签\祖父标签..
等等的所有点击事件,
这叫事件冒泡
-
$(‘.c2‘).click(function () {
alert(‘这是子标签‘);});
//方式1 终止后续事件 常用
$(‘.c1‘).click(function () {
alert(‘这是父标签‘);
return false; //终止后续事件发生
})//方式2 终止后续事件
$(‘.c1‘).click(function (e) {
alert(‘这是父标签‘);
return e.stopPropagation();
})
事件委托
- //$(‘.c1‘).on(事件,子选择器,函数)
//注意,后面添加的子选择器中的class类属性值都要一样,这样才能委托父级标签
$(‘.c1‘).on(‘click‘,‘.btn‘,function () {
var a = `<button class="btn">干死你</button>`;
$(this).after(a);
});
常用事件
-
focus
获取光标时触发的事件-
// focus获取光标时触发的事件
$(‘#username‘).focus(function () {
$(this).css({‘background-color‘:‘yellow‘});
$(‘.c1‘).addClass(‘c2‘);});
-
-
blur
失去光标时触发的事件- //blur失去光标时触发的时间 $(‘#username‘).blur(function () { $(this).css({‘background-color‘:‘white‘}); $(‘.c1‘).removeClass(‘c2‘); });
-
change
域区域内容发生变化时触发- $(‘select‘).change(function () { // $(‘.c1‘).toggleClass(‘c2‘); // console.log($(this)); // console.log($(this).options); // console.log($(this).selectedIndex) // console.log(this); //dom对象 $(this)jquery对象 // console.log(this.options);//所有options标签 // console.log(this.selectedIndex);//获取选中下标 var option_text = this.options[this.selectedIndex].innerText; console.log(option_text); // if (option_text === ‘喝酒‘){} // 获取被选中的option标签的文本内容 // $(‘:selected‘).text(); });
-
hover
鼠标悬浮事件- jquery中用法
直接在hover中写两个函数
一个悬浮,一个离开
- $(‘.c1‘).hover(function () { $(this).css({‘background-color‘:‘green‘}) },function () { $(this).css({‘background-color‘:‘pink‘}) });
- js中用法
需要用到两个关键字
onmouseenter 鼠标进入
onmouseout 鼠标出来- var a = document.getElementById(‘d1‘);
//鼠标进入事件
a.onmouseenter = function(){
this.style.backgroundColor = ‘green‘;
};
a.onmouseout = function(){
this.style.backgroundColor = ‘pink‘;
}
- var a = document.getElementById(‘d1‘);
- jquery中用法
-
input事件
- 根据用户输入的内容实时触发事件 - $(‘#d1‘).on(‘input‘,function(){ console.log($(this).val()); })
页面载入
第一种方式:
window.onload
不推荐使用
- 页面加载事件
当html文件中的所有的
内容加载完成之后
触发这个事件,和位置无关
可以写在head标签中- window.onload=function(){
$(‘.c1‘).click(function(){
$(this).css({‘background-color‘:‘green‘});
});
}
但是window.onload类似于一个全局事件,只能被
赋值一次,再次赋值会覆盖原来绑定的事件中的操作
window.onload 是当页面所有内容加载完成之后触发
(包含视频、图片等等资源加载)
- window.onload=function(){
第二种方式:
jquery方式
- jquery的页面加载事件是当
html文档中的所有标签内容
加载完成之后触发,不要
等待图片、视频等资源加载完成
异步加载- $(document).ready(function(){ $(‘.c1‘).click(function(){ $(this).css({"background-color":"green"}) }) }) - 简写方式 $(function(){ $(‘.c1‘).click(function(){ $(this).css("background-color":"green") }) })