jQuery

jQuery 是一个 JavaScript 库,简化了 DOM 操作、事件处理、动画和Ajax交互。本文详细介绍了 jQuery 的选择器,包括 id、class、标签、组合、层级等,以及属性操作、筛选器、CSS、事件等方面,帮助开发者更高效地编写代码。
摘要由CSDN通过智能技术生成

jQuery是一个javascript库,核心理念是write less,do more(写得更少,做得更多),他内部帮我们把几乎所有功能都做了封装,相比上一节基于DOM、BOM操作会更加简单。

前戏

1. 快速应用
<script src="../jquery-3.5.1.js"></script>
2. DOM对象和jQuery对象

DOM对象和jQuery对象都为标签提供了各种各种功能,并且两者之间可以进行相互转换。

jquery对象[0]   => Dom对象
Dom对象         => $(Dom对象)

1.选择器

选择器,直接找到某个或者某类标签

1.1 id 选择器
$('#id')
1.2 class 选择器
<div class='c1'></div>
$(".c1")
1.3 标签选择器

html代码:

	<div id='i10' class='c1'>
		<a>f</a>
		<a>f</a>
	</div>
	<div class='c1'>
		<a>f</a>
	</div>
	<div class='c1'>
		<div class='c2'> </div>
	</div>
    <script src="../jquery-3.5.1.js"></script>

jQuery代码:

$('a');   //标签选择器,输出所有的a标签
1.4 组合选择器

jQuery代码:

$('a,.c2,#i10');

输出:

jQuery.fn.init(5) [div#i10.c1, a, a, a, div.c2, prevObject: jQuery.fn.init(1)]
1.5 层级选择器

html代码:

    <div id='i10' class='c1'>
        <div>
            <a>hello</a>
        </div>
		<a>f</a>
		<a>f</a>
	</div>
	<div class='c1'>
		<a>f</a>
	</div>
	<div class='c1'>
		<div class='c2'> </div>
	</div>
    <script src="../jquery-3.5.1.js"></script>

jQuery代码:

$('#i10 a');   //子子孙孙中查找

//结果:
jQuery.fn.init(3) [a, a, a, prevObject: jQuery.fn.init(1)]

$('#i10>a');   //儿子中查找
//结果:
jQuery.fn.init(2) [a, a, prevObject: jQuery.fn.init(1)]
1.6基本筛选器

html代码:

<div id='i10' class='c1'>
    <div>
        <a>hello</a>
    </div>
	<a>f2</a>
	<a>f3</a>
</div>
<div class='c1'>
	<a>f</a>
</div>
<div class='c1'>
	<div class='c2'> </div>
</div>
<script src="../jquery-3.5.1.js"></script>

jQuery代码:

$('#i10>a:first').text();
//输出:"f2"
$('#i10>a:last').text();
//输出:"f3"
$('#i10>a:eq(1)').text();
//输出:"f3"
1.7 属性选择器
$('[alex]')       	具有alex属性的所有标签
$('[alex="123"]') 	alex属性等于123的标签

示例:

<div id='i10' class='c1'>
        <div>
            <a>hello</a>
        </div>
        <a alex="123"></a>
        <a alex="567"></a>
		<a>f2</a>
		<a>f3</a>
	</div>

jQuery代码:

$('[alex]');
//输出:
jQuery.fn.init(2) [a, a, prevObject: jQuery.fn.init(1)]

$('[alex="123"]');
//输出:
jQuery.fn.init [a, prevObject: jQuery.fn.init(1)]
1.8 表单选择器

html代码:

<input type="text" />
<input type="button" value="ok"/>
<input type="submit" />
<script src="../jquery-3.5.1.js"></script>

jQuery代码:

$('input [type="text"]');
//输出:
jQuery.fn.init [prevObject: jQuery.fn.init(1)]

$(':text');
//输出:
jQuery.fn.init [input, prevObject: jQuery.fn.init(1)]

$(':button');
$(':submit');
1.9 表单对象属性

html代码:

<input type="text" disabled/>
<input type="button" value="ok"/>
<input type="submit" />
<script src="../jquery-3.5.1.js"></script>

jQuery代码:

$('input:disabled');
jQuery.fn.init [input, prevObject: jQuery.fn.init(1)]
$(':disabled');
jQuery.fn.init [input, prevObject: jQuery.fn.init(1)]

2.筛选器

筛选器一般用于对选择器选中的标签进行再次筛选。

<div>
    <a>asdf</a>
    <a>asdf</a>
    <a id='i1'>asdf</a>
    <a>asdf</a>
    <a id='ii1'>asdf</a>
    <a>asdf</a>
</div>
$('#i1').next()					//下一个兄弟标签
$('#i1').nextAll()				//查找当前元素之后所有的同辈元素。
$('#i1').nextUntil('#ii1')		//查找当前元素之后所有的同辈元素,直到遇到匹配的那个元素为止。

$('#i1').prev()					//上一个兄弟标签
$('#i1').prevAll()
$('#i1').prevUntil('#ii1')

$('#i1').parent()				//父标签
$('#i1').parents()
$('#i1').parentsUntil()

$('#i1').children()				//所有子标签
$('#i1').siblings()				//siblings 所有兄弟标签
$('#i1').find()					//子孙中查找标签
$('li:eq(1)')
$('li').eq(1)					//根据索引获取元素
first()							//匹配的第一个标签
last()							//匹配的最后一个标签
hasClass(class)					//检查当前的元素是否含有某个特定的类,如果有,则返回true。

3.属性

3.1 HTML代码/文本/值
$(..).text()           	# 获取文本内容
$(..).text(<a>1</a>)	# 设置文本内容

$(..).html()
$(..).html("<a>1</a>")

$(..).val()
$(..).val(..)
3.2 样式操作(CSS 类)
addClass			
removeClass
toggleClass				//如果存在(不存在)就删除(添加)一个类。

示例:开关

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
    .hidden {
        display:none;
    }
    </style>
</head>
<body>
    <input id="i1" type="button" value="开关"/>
    <a></a>
    <script src="../jquery-3.5.1.js"></script>
    <script>
    /*
        $('#i1').click(function(){
            if($('#i1').next().hasClass('hidden')){
                $('#i1').next().removeClass('hidden');
            }else{
                $('#i1').next().addClass('hidden');
            }
        })
    */
        $('#i1').click(function(){
            $('#i1').next().toggleClass('hidden');
        })
    </script>
</body>
</html>
3.3 属性操作
# 专门用于做自定义属性
$(..).attr('n')
$(..).attr('n','v')
$(..).removeAttr('n')

<input type='checkbox' id='i1'  />


# 专门用于chekbox,radio
$(..).prop('checked')
$(..).prop('checked', true)

PS: 
	index 获取索引位置
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <input id="i1" type="checkbox">
    <script src="../jquery-3.5.1.js"></script>
    <script>
        $('#i1').attr('name','hello');
        console.log($('#i1').attr('name'))
        $('#i1').attr('checked','checked');
        $('#i1').removeAttr('checked');
        $('#i1').prop('checked',true);
        $('#i1').prop('checked',false);
    </script>
</body>
</html>

4. 文档操作

append			//内部插入
prepend			//内部插入
after			//外部插入
before			//外部插入

remove			//删除标签
empty			//删除标签内部

clone			//克隆

5. CSS

$('t1').css('样式名称', '样式值')
点赞:
	 - $('t1').append()
	 - $('t1').remove()
	 - setInterval
	 - clearInterval
	 - 透明度 10
	 - remove
	 - position
	 - 字体大小,位置

6. 位置

$(window).scrollTop()  获取
$('div').scrollTop()  获取
$(window).scrollTop(0) 设置
scrollLeft([val])

$('#i').offset
offset().left         指定标签在html中的坐标
offset().top          指定标签在html中的坐标

			
position() 	                  指定标签相对父标签(relative)标签的坐标
<div style='relative'>
	<div>
		<div id='i1' style='position:absolute;height:80px;border:1px'></div>
	</div>
</div>
			
			
$('i1').height()           # 获取标签的高度 纯高度
$('i1').innerHeight()      # 纯高度 + padding值*2
$('i1').outerHeight()      # 获取边框 + 纯高度 + padding值*2
$('i1').outerHeight(true)  # 获取边框 + 纯高度 + padding值*2

# 纯高度,边框,外边距,内边距

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .back {
            border-radius:50%;
            height:60px;
            width:60px;
            font-size:small;
            line-height:60px;
            text-align:center;
            border:1px solid grey;
            background-color:blue;
            position:fixed;
            bottom:50px;
            right:50px;
        }
        .small {
            width:200px;
            height:200px;
            overflow:auto;
            border:1px solid red;
        }

    </style>
</head>
<body>
    <div class="small">
        <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
        <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
        <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
        <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
        <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
        <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
        <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
        <p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p><p>1</p>
    </div>
    <div id="i1">1</div>
    <div class="back">
        返回顶部
    </div>
    <script src="../jquery-3.5.1.js"></script>
    <script>
        console.log($('.small').offset().top);
        console.log($('.small').offset().left);
        console.log($('#i1').offset().top);
        $('.back').click(function(){
            $(window).scrollTop(0);
            console.log($('.back').offset().top);
            console.log($('.back').offset().left);
        });

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

7.事件

默认事件先执行: checkbox
自定义先执行 a submit

jQuery:
	$('.c1').click()
	$('.c1').....
	
	$('.c1').on('click', function(){	
	})
	$('.c1').off('click', function(){	
	})

	//$('.class').on("click",function(){……});相当于$('.class').bind("click",function(){……});
	//$(document).on("click",'.class',function(){……});相当于	$('.class').live("click",function(){……});
	//js生成的元素绑定事件必须使用live,但新版的jq,已经淘汰了live,可以用on方法代替,但必须注意写法。

	阻止事件发生
	return false



# 当页面框架加载完成之后,自动执行,一般JavaScript的代码都写在里面,速度快
$(function(){
	
	$(...)
	
})

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .error {
            color:red;
        }
    </style>
</head>
<body>
    <div>
        <form id="f1" action="scoretop.html" method="get">
            <div><input type="text" ></div>
            <div><input type="password" ></div>
            <div><input type="text" ></div>
            <div><input type="text" ></div>
            <div><input type="text" ></div>
            <div><input class="deli" type="submit" ></div>
        </form>
    </div>
    <script src="../jquery-3.5.1.js"></script>
    <script>
        $(function(){
            $('.deli').on('click',function(){
                var flag = true;
                $('.error').remove();
                $('#f1').find('input[type="text"],input[type="password"]').each(function(){
                    var v=$(this).val();
                    if(v.length <=0){
                        flag=false;
                        var tag = document.createElement('span');
                        $(tag).text('必填');
                        $(tag).addClass('error');
                        $(this).after(tag);
                    }
                })
                return flag;
            })
        })       
    </script>
</body>
</html>

8. jQuery扩展

- $.extend        $.方法
- $.fn.extend     $(..).方法

//自执行函数主要是引入其他代码时,封装变量用的。
(function(){
	var status = 1;
	// 封装变量
})(jQuery)

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div class="i1"></div>
    <script src="../jquery-3.5.1.js"></script>
    <script>
        $.extend({
            'maria':function(){
                return 'hello';
            }
        });
        var v=$.maria();
        alert(v);
        $.fn.extend({
            'mily':function(){
                return 'hi';
            }
        });
        var b=$('i1').mily();
        alert(b);
    </script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值