JSON及JQuery介绍

JavaScript JSON


JSON 是用于存储和传输数据的格式。

JSON 通常用于服务端向网页传递数据 。


什么是 JSON?

  • JSON 英文全称 JavaScript Object Notation
  • JSON 是一种轻量级的数据交换格式。
  • JSON是独立的语言 *****
  • JSON 易于理解。
Note* JSON 使用 JavaScript 语法,但是 JSON 格式仅仅是一个文本。 文本可以被任何编程语言读取及作为数据格式传递。

JSON 实例

以下 JSON 语法定义了 sites 对象: 3 条网站信息(对象)的数组:

{“sites”:[{“name”:“Runoob”, “url”:“www.runoob.com”},{“name”:“Google”, “url”:“www.google.com”},{“name”:“Taobao”, “url”:“www.taobao.com”}]}


JSON 格式化后为 JavaScript 对象

JSON 格式在语法上与创建 JavaScript 对象代码是相同的。
由于它们很相似,所以 JavaScript 程序可以很容易的将 JSON 数据转换为 JavaScript 对象。


JSON 语法规则

  • 数据为 键/值 对。
  • 数据由逗号分隔。
  • 大括号保存对象
  • 方括号保存数组

JSON 数据 - 一个名称对应一个值

JSON 数据格式为 键/值 对,就像 JavaScript 对象属性。

键/值对包括字段名称(在双引号中),后面一个冒号,然后是值:

“name”:“Runoob”


JSON 对象

JSON 对象保存在大括号内。

就像在 JavaScript 中, 对象可以保存多个 键/值 对:

{“name”:“Runoob”, “url”:“www.runoob.com”}


JSON 数组

JSON 数组保存在中括号内。

就像在 JavaScript 中, 数组可以包含对象:

“sites”:[ {“name”:“Runoob”, “url”:“www.runoob.com”}, {“name”:“Google”, “url”:“www.google.com”}, {“name”:“Taobao”, “url”:“www.taobao.com”} ]

在以上实例中,对象 “sites” 是一个数组,包含了三个对象。

每个对象为站点的信息(网站名和网站地址)。


JSON 字符串转换为 JavaScript 对象

通常我们从服务器中读取 JSON 数据,并在网页中显示数据。

简单起见,我们网页中直接设置 JSON 字符串 (你还可以阅读我们的 JSON 教程):

首先,创建 JavaScript 字符串,字符串为 JSON 格式的数据:

var text = ‘{ “sites” : [’ + ‘{ “name”:“Runoob” , “url”:“www.runoob.com” },’ + ‘{ “name”:“Google” , “url”:“www.google.com” },’ + ‘{ “name”:“Taobao” , “url”:“www.taobao.com” } ]}’;

然后,使用 JavaScript 内置函数 JSON.parse() 将字符串转换为 JavaScript 对象:

var obj = JSON.parse(text);

最后,在你的页面中使用新的 JavaScript 对象:

实例

var text = ‘{ “sites” : [’ + ‘{ “name”:“Runoob” , “url”:“www.runoob.com” },’ + ‘{ “name”:“Google” , “url”:“www.google.com” },’ + ‘{ “name”:“Taobao” , “url”:“www.taobao.com” } ]}’; obj = JSON.parse(text); document.getElementById(“demo”).innerHTML = obj.sites[1].name + " " + obj.sites[1].url;


相关函数

函数描述
JSON.parse()用于将一个 JSON 字符串转换为 JSON对象。
JSON.stringify()用于将 JSON对象转换为 JSON 字符串。

什么是JQuery?

  • jQuery是一个JavaScript库(框架),它通过封装原生的JavaScript函数得到一整套定义
    好的方法。它的作者是John Resig,于2006年创建的一个开源项目,随着越来越多开发
    者的加入,JQuery已经集成了JavaScript、 CSS、 DOM和Ajax于一体的强大功能。它
    可以用最少的代码,完成更多复杂而困难的功能,从而得到了开发者的青睐。

  • JQuery的学习网站:
    1.在线的可以访问:http://t.mb5u.com/jquery/
    2. http://www.runoob.com/ 前端知识的学习网站
    最新的文档,英文版的:http://api.jquery.com/

  • JQuery库的下载:http://www.jq22.com/jquery-info122

JQuery 的功能和优势

  • JQuery 作为 JavaScript 封装的库,他的目的就是为了简化开发者使用 JavaScript。主要功能有以下几点:
    • 1.像 CSS 那样访问和操作 DOM
    • 2.修改 CSS 控制页面外观
    • 3.简化 JavaScript 代码操作
    • 4.事件处理更加容易
    • 5.各种动画效果使用方便
    • 6.让 Ajax 技术更加完美 异步加载
    • 7.基于 jQuery 大量插件
    • 8.自行扩展功能插件JQuery
  • 最大的优势,就是特别的方便。比如模仿 CSS 获取 DOM,比原生的 JavaScript要方便太多。并且在多个 CSS 设置上的集中处理非常舒服,而最常用的 CSS 功能又封装到单独的方法,感觉非常有心。最重要的是 jQuery 的代码兼容性非常好,你不需要总是头疼

代码风格

在jQuery程序中,不管是页面元素的选择、内置的功能函数,都是美元符号“$”来起
始的。而这个“$”就是jQuery当中最重要且独有的对象:jQuery对象,所以我们在页
面元素选择或执行功能函数的时候可以这么写:
$(function () {});	 //执行一个匿名函数
$(‘#box’);	 //进行执行的ID元素选择
$(‘#box’).css(‘color’, ‘red’); 	//执行功能函数
由于$本身就是jQuery对象的缩写形式,那么也就是说上面的三段代码也可以写成如下形式:
jQuery(function () {});
jQuery(‘#box’);
jQuery(‘#box’).css(‘color’, ‘red’);
值得一提的是,执行了.css()这个功能函数后,最终返回的还是jQuery对象,那么也就
是说,jQuery的代码模式是采用的连缀方式,可以不停的连续调用功能函数。
$('#box').css('color', 'red').css('font-size', '50px'); //连缀
jQuery中代码注释和JavaScript是保持一致的,有两种最常用的注释:单行使用“//...” ,多行使用“/* ... */” 。

加载模式

我们在之前的代码一直在使用$(function () {});这段代码进行首尾包裹,那么为什么必须
要包裹这段代码呢?原因是我们jQuery库文件是在body元素之前加载的,我们必须等待所
有的DOM元素加载后,延迟支持DOM操作,否则就无法获取到。
在延迟等待加载,JavaScript提供了一个事件为load,方法如下:
window.onload = function () {}; //JavaScript等待加载
$(document).ready(function () {}); //jQuery等待加载


案例演示:
<!DOCTYPE html>
<html>
     <head>
     <meta charset="utf-8">
	 <title></title>
	 <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
	 <script type="text/javascript">
	 /* 	window.onload=function(){
			$('button').css('background','red');
		    } */
	  //	jQuery 页面加载完再去执行 ready()
     /* 	$(document).ready(function(){
		       $('button').css('background','red');			
	        }); */		
	//针对上面的写法,有个简写形式
	
	        $(function(){
			   $('button').css('background','red');
			});		
	
	  </script>
</head>
<body>
	<button type="button">一个按钮</button>
</body>
</html>

选择器

JQuery选择器与CSS选择器用法相同,只是格式不同
如:CSS模式:div{}   #box{},JQuery模式:$('div'){}  $('#box'){}
$('')里面的东西就是CSS选择器的写法
<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<title></title>
	<script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		$(function () {
			//Jquery选择一个或 多个标签 采用的是CSS的选择器的写法
			$('h1').eq(0).css('color', 'red');
		});
	</script>
</head>

<body>
	<h1>aaaaaa</h1>
	<h1>aaaaaa</h1>
	<h1>aaaaaa</h1>
	<h1>aaaaaa</h1>
	<h1>aaaaaa</h1>
	<h1>aaaaaa</h1>
	<h1>aaaaaa</h1>
</body>

对象互换

jQuery 对象虽然是 jQuery 库独有的对象,但它也是通过 JavaScript 进行封装而来的。 我
们可以直接输出来得到它的信息。
alert($); //jQuery 对象方法内部
alert($()); //jQuery 对象返回的对象,还是 jQuery
alert($('#box')); //包裹 ID 元素返回对象,还是 jQuery
从上面三组代码我们发现:只要使用了包裹后,最终返回的都是 jQuery 对象。这样的
好处显而易见,就是可以连缀处理。但有时,我们也需要返回原生的 DOM 对象,比如:
alert(document.getElementById('box')); //[object HTMLDivElement]
jQuery 想要达到获取原生的 DOM 对象,可以这么处理:
alert($('#box').get(0)); //ID 元素的第一个原生 DOM
从上面 get(0),这里的索引看出,jQuery 是可以进行批量处理 DOM 的.

节点操作

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            var mydiv = $("<div>abc</div>");
            $('body').append(mydiv);
            $('h1').appendTo('#mydiv');
            $('ul').after('<h2>bbbbbbb</h2>');
            $('span').insertAfter('#mydiv2');
        });
    </script>
</head>

<body>
    <h1>一行标题</h1>
    <div id="mydiv">
        <h2>2222222</h2>
    </div>
    <ul>
        <li>abc</li>
        <li>abc</li>
        <li>abc</li>
        <li>abc</li>
        <li>abc</li>
    </ul>
    <span>bbbbbbbbbbbbbbbbbbbbbbb</span>
    <span>bbbbbbbbbbbbbbbbbbbbbbb</span>
    <span>bbbbbbbbbbbbbbbbbbbbbbb</span>
    <span>bbbbbbbbbbbbbbbbbbbbbbb</span>
    <div id="mydiv2">
        aaaaaaaaaa
    </div>
    <b>asdfasdfasdfasdf</b>
    <b>asdfasdfasdfasdf</b>
    <b>asdfasdfasdfasdf</b>
    <b>asdfasdfasdfasdf</b>
    <b>asdfasdfasdfasdf</b>
    <b>asdfasdfasdfasdf</b>
    <b>asdfasdfasdfasdf</b>
</body>

</html>

取代选择器的方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			$(function() {
				//$('div p span').css('color','red');
				//使用find()方法可以层层往下找
				$('div').find('p').find('span').css('color', 'red');

				//$('ul>li').css('color', 'red');
				$('ul').children('li').css('color','yellow');
				
				$('h1').eq(0).next('h1').next('h1').next('h1').css('color','red');
			});
		</script>
	</head>
	<body>
		<div id="">
			<p>
				<span>abc</span>
			</p>
		</div>

		<ul>
			<li>bbbbbbbb</li>
			<li>bbbbbbbb</li>
			<li>bbbbbbbb</li>
			<li>bbbbbbbb</li>
			<li>bbbbbbbb</li>
			<li>bbbbbbbb</li>
			<li>bbbbbbbb</li>
		</ul>
		
		<h1>aaaaa</h1>
		<h1>aaaaa</h1>
		<h1>aaaaa</h1>
		<h1>cccc</h1>
		
	</body>
</html>

属性的操作

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <style>
        .mycss {
            color: red;
            font-size: 200px;
        }
    </style>
    <title>Document</title>
    <script src="js/jquery.min.js"></script>
    <script>
        $(document).ready(function () {
            //获取属性的值
            var text = $('div').attr('id');
            //alert(text);
            //设置属性
            // $('div').attr('class', 'mycss');

            //移除属性
            $('div').removeAttr('class');

        });
    </script>
</head>

<body>
    <div id="mydiv" class="mycss">
        abc
    </div>
</body>

</html>

淡入淡出的动画

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background: red;
        }
    </style>
    <script src="js/jquery.js">
    </script>
    <script>
        $(document).ready(function () {
            $('button').eq(0).click(function () {
                $('div').fadeIn(1000);  //淡入的方法

            });
            $('button').eq(1).click(function () {
                $('div').fadeOut(1000)  //淡出的方法

            });

            $('button').eq(2).click(function () {
                $('div').fadeToggle(500);  //淡入淡出的开关

            });
        });
    </script>
</head>

<body>
    <div></div>
    <button>淡入</button>
    <button>淡出</button>
    <button>开关</button>
</body>

</html>

事件的绑定及简写

//事件的绑定与解绑
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/jquery.js"></script>
    <script>
        $(document).ready(function () {
            // $('button').bind('click', function () {
            //     alert("谈了");
            // });

            // $('button').bind('mouseover', function () {
            //     //alert("谈了2");
            //     $(this).css('background', 'red');
            // });


            //绑定多个事件
            $('button').bind('click', function () {
                $(this).css('background', 'red');

            }).bind('mouseover', function () {
                $(this).css('background', 'yellow');

            }).bind('mouseout', function () {
                $(this).css('background', 'blue');
            });


            //解绑事件
            $('button').unbind('click');
        });
    </script>
</head>

<body>
    <button>一个按钮</button>
</body>

</html>
//绑定时间的简写方式
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/jquery.js"></script>
    <script>
        $(document).ready(function () {
            // $('button').click(function (e) {

            // }).mouseover(function () {

            // }).mouseout(function () {

            // });
            //hover
            $('button').hover(function (e) {
                $(e.currentTarget).css('background', 'red');
                // over
                //$(this).css('background', 'red');
            }, function (e) {
                // out
                //this.style.background = "yellow";
                $(e.target).css('background', 'yellow');
            });
        });
    </script>
</head>

<body>
    <button>一个按钮</button>
</body>

</html>

事件的自动触发

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/jquery.js"></script>
    <script>
        $(document).ready(function () {
            // $('button').click(function () {
            //     alert('aabc');
            // });
            // //自动触发我们绑定的事件
            // $('button').trigger('click');


            //以上两步可以简写

            $('button').click(function () {
                alert('aabc');
            }).triggerHandler('click');

        });
    </script>
</head>

<body>
    <button>一个按钮</button>
</body>

</html>

下拉上卷动画

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background: red;
        }
    </style>
    <script src="js/jquery.js">
    </script>
    <script>
        $(document).ready(function () {
            $('button').eq(0).click(function () {
                $('div').slideUp(1000);   //上卷方法

            });
            $('button').eq(1).click(function () {
                $('div').slideDown(1000);  //下拉方法

            });

            $('button').eq(2).click(function () {
                $('div').slideToggle(200);   //下拉上卷开关的方法

            });
        });
    </script>
</head>

<body>
    <div></div>
    <button>上卷</button>
    <button>下来</button>
    <button>开关</button>
</body>

</html>

新的绑定事件方式

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="js/jquery.js"></script>
    <script>
        $(document).ready(function () {
            // $('button').bind('click',function(){});
            $('button').eq(0).on('click', function () {
                alert("abc");
            }).on('mouseover', function () {
                $(this).css('background', 'red');
            }).on('mouseout', function () {
                $(this).css('background', 'yellow');
            });
            //解绑
            $('button').eq(0).off('click');

            //事件只执行一次
            $('button').eq(1).one('click', function () {
                alert("abc");
            })

            //  $('button').mousedown(function(){});


        });
    </script>
</head>

<body>
    <button>一个按钮</button>
    <button>一个按钮</button>
</body>

</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值