jQuery入门(获取对象、函数区别、对象转换)

什么是jQuery

jQuery是js库,它通过封装原生的JavaScript函数得到一套定义好的方法。
jQuery主旨:以更少的代码,实现更多的功能。write less,do more

jQuery的优势

jQuery优势:
1.可以像css一样访问页面外观
2.简化js代码操作
3.事件处理更加容易
4.动画效果使用方便
5.Ajax技术更加完美
6.大量的基于jQuery的插件
7.可以自定义拓展功能插件

jQuery和JavaScript的一些区别

获取对象的区别

1.首先看js获取对象的方法;
我们写一个点击按钮使div隐藏和显现的功能
看代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js和jQuery的比较</title>
    <style>
        #container{
            width: 100px;
            height: 100px;
            background-color: orange;
        }
    </style>
</head>
<body>

<div id="container"></div>
<button id="toggle">Toggle(切换)</button>
</body>

<script>
    var btn=document.getElementById('toggle');
    var con=document.getElementById('container');
    btn.onclick=function(){
        if(con.style.display!='none'){
            con.style.display='none';
        }else{
            con.style.display='block';
        }
    }

</script>

</html>

我们看到,首先需要获取两个对象并分别定义为一个(var)变量;
然后给按钮添加一个实践监听;
然后还需要if else来判断:当div显现的时候点击使其隐藏,当div隐藏的时候点击使其显现

接着我们用jQuery的方法来实现这个功能,看一下有何区别:
代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js和jQuery的比较</title>
    <style>
        #container{
            width: 100px;
            height: 100px;
            background-color: orange;
        }
    </style>
</head>

<body>
<div id="container"></div>
<button id="toggle">Toggle(切换)</button>
</body>

<script src="../js/jquery-3.1.1.js"></script>
<script>

    var btn = $('#container');
    var jq=$('#toggle');
    jq.click(function(){
        btn.toggle()
    });
 
</script>
</html>

首先需要引入jQuery库;设置好你文件的路径
然后同样获取对象,但是jQuery的要简洁很多:
var btn = $(’#container’);
就相当于js里的
var btn=document.getElementById(‘toggle’);

接着这一步:
jq.click(function(){
btn.toggle()
});

就相当于js里的
btn.οnclick=function(){
if(con.style.display!=‘none’){
con.style.display=‘none’;
}else{
con.style.display=‘block’;
}
}

需要注意的是:
js对象和jQuery对象是不能相互使用的,js对象不能使用jQuery的方法 jQuery也不能使用js的方法
js和jQuery方法的写法也是不同的,比如js里onclick在jQuery里是写成click的
小注:根据id获取:#div 根据类名:.div 根据标签名:div

文档就绪函数的区别

我们注意到,上面的代码里script是写在body下面的。因为代码都是逐行读取的,需要先加载完页面,再执行js代码。如果我们写在上面的话,就会获取不到我们需要获取的对象,因为当执行js代码的时候,文档还没有加载完毕,所以我们获取的是空元素,从而不能加事件监听,会报错。
代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js和jQuery的比较</title>
    <style>
        #container{
            width: 100px;
            height: 100px;
            background-color: orange;
        }
    </style>
    <script>
        var btn=document.getElementById('toggle');
        var con=document.getElementById('container');
        btn.onclick=function(){
            if(con.style.display!='none'){
                con.style.display='none';
            }else{
                con.style.display='block';
            }
        }

    </script>
</head>
<body>

<div id="container"></div>
<button id="toggle">Toggle(切换)</button>
</body>

</html>

如图,这样写是没用效果的:
效果图

所以,
这时候我们需要加上文档就绪函数:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js和jQuery的比较</title>
    <style>
        #container{
            width: 100px;
            height: 100px;
            background-color: orange;
        }
    </style>
    <script>
        window.onload=function(){
            var btn=document.getElementById('toggle');
            var con=document.getElementById('container');
            btn.onclick=function(){
                if(con.style.display!='none'){
                    con.style.display='none';
                }else{
                    con.style.display='block';
                }
            }
        }
    </script>
</head>
<body>

<div id="container"></div>
<button id="toggle">Toggle(切换)</button>
</body>

</html>

这是js的写法,jQuery的写法与之不同;
看代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js和jQuery的比较</title>
    <style>
        #container{
            width: 100px;
            height: 100px;
            background-color: orange;
        }
    </style>
    <script src="../js/jquery-3.1.1.js"></script>
    <script>
        $(document).ready(function(){
            var container = $('#container');
            var jq=$('#toggle');
            jq.click(function(){
                container.toggle();
            });
        });
        
    </script>
</head>
<body>

<div id="container"></div>
<button id="toggle">Toggle(切换)</button>
</body>

</html>

js文档就绪函数window.load和jQuery文档就绪函数$(document).ready的区别:
1.
执行时机不一样 js的是等全部的dom加载完毕,并且完全显示后执行。
jQuery是等dom加载完毕之后即可执行(优点:执行的时机会提前)。

2.
js的文档就绪函数不能重复定义 ,如果重复定义的话,下面的代码会把上面的覆盖掉,只有一个有效果。
jQuery的可以重复定义,不会相互覆盖,都有效果,可以执行多次,第n次都不会被上一次覆盖

3.
js的文档就绪函数没有简写方案。
jQuery的简写方案为:$(function(){
})。

js和jQuery对象的相互转换

在某些情况下,我们想对js对象使用jQuery的方法,或者对jQuery对象使用js方法,这时候就需要对着两种对象类型进行转换。

jQuery对象转化为js对象

话不多说,看下面代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        #div{
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
<body>

    <div id="div"></div>
    <button id="btn">button</button>

</body>

<script src="../js/jquery-3.1.1.min.js"></script>
<script>
    var jq=$("#btn");
    var js=jq[0];
    js.onclick=function(){
        $("#div").css('background-color','green')
    };
</script>
</html>

我们想要实现的效果是:点击按钮,div的背景颜色从红色变为绿色。

首先,我们第一步获取的是一个jQuery对象;

然后通过 var js=jq[0]; 使其成为了一个js对象;

这样就能给它加js的监听事件了,当点击按钮,div背景色从红变绿。

这是第一种方法,第二种方法是 var js=jq.get(0); 用这条代码替换 var js=jq[0];效果是一样的

js对象转化为jQuery对象

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js和jQuery对象的相互转换</title>
    <style>
        #div{
            width: 100px;
            height: 100px;
            background-color: red;
        }
    </style>
</head>
<body>

    <div id="div"></div>
    <button id="btn">button</button>

</body>

<script src="../js/jquery-3.1.1.min.js"></script>
<script>
    var js = document.getElementById('btn');
    var jsdiv = document.getElementById('div');
    var jq = $(js);
    jq.click(function(){
        var jqdiv=jQuery(jsdiv);
        jqdiv.css('background-color','green')
    })
</script>
</html>

和上面的例子一样,点击按钮背景色由红变绿。

这次是用js的方法获取的两个对象;然后用 $(js对象) 或者 jQuery(js对象) 把他们转换为jQuery对象,用jQuery的方法实现这个功能。

注意:$就是jQuery的简写,这两个写法的功能是一样的。 $() 就是jQuery对象加工厂,使js对象转换为jQuery对象。

ps:当满足某一情景的时候 自动去调用一个函数 这个叫做回调函数

jQuery解决多库冲突(实际应用不多)

当引入多个js库的时候,因为不知jQuery用 $ 符号,可能 $ 符号会冲突,这时我们有三种方法能解决这个问题。

1.然后用jQuery代替$:

jQuery.noConflict();

2.重新声明一个写法:

 var $j = jQuery.noConflict();

3.自调用一个匿名函数,给他一个形参 $ 和一个实参jQuery,然后在这个函数里面写jQuery操作,就可以继续正常使用 $ 符号了:

    !function ($){
 
    }(jQuery);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值