jQuery 学习笔记(jQuery: The Return Flight)

第一课.

ajax:$.ajax(url[, settings])

 

练习代码:

$(document).ready(function() {$("#tour").on("click", "button", function() {$.ajax('/photos.html', {success: function(response) {$('.photos').html(response).fadeIn();}});});
});
<div id="tour" data-location="london"><button>Get Photos</button><ul class="photos"></ul>
</div>

ajax 调用简写:$.get(url, success)

$(document).ready(function() {$("#tour").on("click", "button", function() {$.get('/photos.html', function(response) {$('.photos').html(response).fadeIn();});});
});

ajax 传递参数:直接在 url 中拼接或使用 data 对象传递,data: { "confNum": 1234 }

练习代码:获取网页元素中的 data 属性值作为 ajax 参数值传递

$(document).ready(function() {$("#tour").on("click", "button", function() {$.ajax('/photos.html', {success: function(response) {$('.photos').html(response).fadeIn();},data: { "location": $("#tour").data("location")}});});
});
<div id="tour" data-location="london"><button>Get Photos</button><ul class="photos"></ul>
</div>

第二课.

ajax 异常处理:error: function(request, errorType, errorMessage) { }

 

ajax 超时设定:timeout: 3000

 

ajax 调用前(beforeSend: function() {})完成后(complete: function() {})执行方法:

练习代码:

$(document).ready(function() {var el = $("#tour");el.on("click", "button", function() {$.ajax('/photos.html', {data: {location: el.data('location')},success: function(response) {$('.photos').html(response).fadeIn();},error: function(request, errorType, errorMessage) {//var errmsg = $("<li>Error: " + errorType + " with message: " + errorMessage + "</li>");//$('.photos').append(errmsg);//alert('Error: ' + errorType + ' with message: ' + errorMessage);$('.photos').html('<li>There was a problem fetching the latest photos. Please try again.</li>');},timeout: 3000,beforeSend: function() {$("#tour").addClass("is-fetching")},complete: function() {$("#tour").removeClass("is-fetching")}});});
});
<div id="tour" data-location="london"><button>Get Photos</button><ul class="photos"></ul>
</div>

ajax 事件处理:处理 ajax 完成新增的标签元素的事件

 

练习代码:

$(document).ready(function() {function showPhotos() {$(this).find('span').slideToggle();}$('.photos').on('mouseenter', 'li', showPhotos).on('mouseleave', 'li', showPhotos);var el = $("#tour");el.on("click", "button", function() {$.ajax('/photos.html', {data: {location: el.data('location')},success: function(response) {$('.photos').html(response).fadeIn();},error: function() {$('.photos').html('<li>There was a problem fetching the latest photos. Please try again.</li>');},timeout: 3000,beforeSend: function() {$('#tour').addClass('is-fetching');},complete: function() {$('#tour').removeClass('is-fetching');}});});
});

HTML、AJAX Result

<div id="tour" data-location="london"><button>Get Photos</button><ul class="photos"></ul>
</div>
<li><img src="/assets/photos/paris1.jpg"><span style="display: none;">Arc de Triomphe</span>
</li>
<li><img src="/assets/photos/paris2.jpg"><span style="display: none;">The Eiffel Tower</span>
</li>
<li><img src="/assets/photos/london.jpg"><span style="display: none;">London</span>
</li>

第三课. 

JavaScript Objects:

练习代码:

重构前:

$(document).ready(function() {$("#tour").on("click", "button", function() {$.ajax('/photos.html', {data: {location: $("#tour").data('location')},success: function(response) {$('.photos').html(response).fadeIn();},error: function() {$('.photos').html('<li>There was a problem fetching the latest photos. Please try again.</li>');},timeout: 3000,beforeSend: function() {$('#tour').addClass('is-fetching');},complete: function() {$('#tour').removeClass('is-fetching');}});});
});

重构为 JavaScript 对象 tour 后:

var tour = {init: function() {$("#tour").on("click", "button", this.fetchPhotos);},fetchPhotos: function() {$.ajax('/photos.html', {data: {location: $("#tour").data('location')},success: function(response) {$('.photos').html(response).fadeIn();},error: function() {$('.photos').html('<li>There was a problem fetching the latest photos. Please try again.</li>');},timeout: 3000,beforeSend: function() {$('#tour').addClass('is-fetching');},complete: function() {$('#tour').removeClass('is-fetching');}})}
}
$(document).ready(function() { tour.init();
});

第四课.

JavaScript Functions:重点理解 this 变量的作用域


ajax 回调函数中应用调用函数变量 this 时, 需要首先在 ajax 的 context 参数中传入调用函数的 this 变量:

练习代码:

function Tour(el) {var tour = this;this.el = el;this.photos = this.el.find('.photos');this.fetchPhotos = function() { $.ajax('/photos.html', {data: {location: tour.el.data('location')},context: tour,success: function(response) {this.photos.html(response).fadeIn();},error: function() {this.photos.html('<li>There was a problem fetching the latest photos. Please try again.</li>');},timeout: 3000,beforeSend: function() {this.el.addClass('is-fetching');},complete: function() {this.el.removeClass('is-fetching');}});}this.el.on('click', 'button', this.fetchPhotos);
}$(document).ready(function() { var paris = new Tour($('#paris'));var london = new Tour($('#london'));
});
<div id="paris" data-location="paris"><button>Get Paris Photos</button><ul class="photos"></ul>
</div><div id="london" data-location="london"><button>Get London Photos</button><ul class="photos"></ul>
</div>

第五课.

Ajax Forms

$('form').on('submit', function(event) {});  //表单提交事件

event.preventDefault(); //阻止浏览器的默认表单提交行为

type: 'POST' // POST 方式提交

data:{ "destination": $('#destination').val(), "quantity": $('#quantity').val() } //获取表单中的元素值提交数据

data: $('form').serialize() //通过表单序列化,提交整张表单中的数据

练习代码:

$(document).ready(function() {$('form').on('submit', function(event) {event.preventDefault();$.ajax('/book', {type: 'POST',data: $('form').serialize(),success: function(response){$('.tour').html(response);}});});
});
<div class="tour" data-daily-price="357"><h2>Paris, France Tour</h2><p>$<span id="total">2,499</span> for <span id="nights-count">7</span> Nights</p><form action="/book" method="POST"><p><label for="nights">Number of Nights</label></p><p><input type="number" name="nights" id="nights" value="7"></p><input type="submit" value="book"></form>
</div>

第六课.

Ajax with JSON

dataType: 'json' // 通知服务器提交的数据类型为 json

contentType: 'application/json' //要求服务器返回的数据类型为 json

attr(<attribute>) //获取 html 对象的属性

attr(<attribute>, <value>) //给 html 对象的属性赋值

 

 

练习代码:

$(document).ready(function() {$('form').on('submit', function(event) {event.preventDefault();$.ajax($('form').attr('action'), {type: $('form').attr('method'),data: $('form').serialize(),dataType: 'json',success: function(response) {$('.tour').html('<p></p>').find('p').append('Trip to ' + response.description).append(' at $' + response.price).append(' for ' + response.nights + ' nights').append('. Confirmation: ' + response.confirmation);}});});
});
<div class="tour" data-daily-price="357"><h2>Paris, France Tour</h2><p>$<span id="total">2,499</span> for <span id="nights-count">7</span> Nights</p><form action="/book" method="POST"><p><label for="nights">Number of Nights</label></p><p><input type="number" name="nights" id="nights" value="7"></p><input type="submit" value="book"></form>
</div>

第七课.

Utility Methods

$.each(collection, function(<index>, <object>) {}) //iterate through the array

练习代码:

$('button').on('click', function() {$.ajax('/cities/deals', {contentType: 'application/json',dataType: 'json',success: function(result) {$.each(result, function(index, dealItem) {var dealElement = $('.deal-' + index);dealElement.find('.name').html(dealItem.name);dealElement.find('.price').html(dealItem.price);});}});
});

$.getJSON(url, success); //result will be an array of avaScript Objects

练习代码:

$('button').on('click', function() {$.getJSON('/cities/deals', function(result) {$.each(result, function(index, dealItem) {var dealElement = $('.deal-' + index);dealElement.find('.name').html(dealItem.name);dealElement.find('.price').html(dealItem.price);});});
});

$.map(collection, function(<item>, <index>){});

练习代码:

$('.update-available-flights').on('click', function() {$.getJSON('/flights/late', function(result) {var flightElements = $.map(result, function(flightItem, index){var liItem = $('<li></li>');liItem.append('<p>'+flightItem.flightNumber+'</p>');liItem.append('<p>'+flightItem.time+'</p>');return liItem;});$('.flight-times').html(flightElements);});
});

$.each vs $.map

 

.detach() //.detach() removes an element from the DOM, preserving all data and events. 

detach() 方法移除被选元素,包括所有文本和子节点。

这个方法会保留 jQuery 对象中的匹配的元素,因而可以在将来再使用这些匹配的元素。

detach() 会保留所有绑定的事件、附加的数据,这一点与 remove() 不同。

练习代码:

$('.update-available-flights').on('click', function() {$.getJSON('/flights/late', function(result) {var flightElements = $.map(result, function(flightItem, index){var flightEl = $('<li>'+flightItem.flightNumber+'-'+flightItem.time+'</li>');return flightEl;});$('.flight-times').detach().html(flightElements).appendTo('.flights');});
});

第八课.

Managing Events:同一个元素同一个事件挂接多个事件处理程序,按顺序执行

off(<event name>) //停止事件的监听,同时停止当前元素上指定事件的所有监听,如:$('button').off('click');

Namespacing Events:给事件监听程序命名,用于同一个元素,相同事件多个监听程序时的区分和禁用、还原等操作

trigger(<event name>):触发被选元素的指定事件类型

 

create a custom event:创建自定义事件后,可以通过代码触发的方式同时触发多种页面元素的监听的相同的自定义事件。

$(<dom element>).on("<event>.<namespace>", <method>)

 

转载于:https://www.cnblogs.com/cnshen/p/3944434.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/273607.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

于我,过去,现在和未来 —— 西格里夫·萨松

In me, past, present, future meet            于我&#xff0c;过去、现在和未来To hold long chiding conference              商讨聚会 各执一词 纷扰不息My lusts usurp the present tense             林林总总的 欲望&#xff0c;…

Java assert关键字

Java assert关键字 Assert 简介 Java2在1.4中新增了一个关键字&#xff1a;assert。在程序开发过程中使用它创建一个断言(assertion)。语法格式有两种&#xff1a; assert condition; 这里condition是一个必须为真(true)的表达式。如果表达式的结果为true&#xff0c;那么断言为…

计算几何 半平面交

LA 4992 && hdu 3761 Jungle Outpost 杭电的有点坑啊。。一直爆内存&#xff0c;后来发现大白的半平面交模板那里 point *p new point[n]; line *q new line[n]这里出了问题&#xff0c;应该是在函数里面申请不了比较大的数组&#xff0c;所以爆内存。。我在全局定义…

Maven 强制导入jar包

场景 有时候因为各种原因(依赖有了&#xff0c;jar包有了)&#xff0c;项目中就是没有这个jar包。 在需要强导的项目中创建lib文件夹&#xff0c;将需要强导的jar包访问lib中。添加依赖$&#xff5b;pom.basedir&#xff5d;:获取当前所在的项目目录 $&#xff5b;pom.basedir&…

《Java 高并发》03 线程的生命周期

相关概念 进程是指一个内存中运行的应用程序&#xff0c;每个进程都有自己独立的一块内存空间&#xff0c;一个进程中可以启动多个线程。 一个进程是一个独立的运行环境&#xff0c;它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含…

Spring boot 整合dynamic实现多数据源

项目git地址&#xff1a;Jacob-dynamic 准备工作 # 创建数据库db1 CREATE DATABASE db1CHARACTER SET utf8 COLLATE utf8_bin # 创建user表 CREATE TABLE user (id int(11) DEFAULT NULL,name varchar(255) DEFAULT NULL ) ENGINEInnoDB DEFAULT CHARSETutf8 # 添加数据 INSERT…

Could not autowire. No beans of 'JavaMailSender' type found..md

Could not autowire. No beans of JavaMailSender type found. 导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.1.5.RELEASE</version> </depe…

极客Web前端开发资源集锦

本周我们带来的前端推荐包含当前热门的bootstrap&#xff0c;html5&#xff0c;css3等技术内容和新闻话题&#xff0c;如果你还想近一步学习如何开发&#xff0c;还可以关注我们的极客课程库&#xff0c;里面涵盖了现代开发技术的‘学’与‘习’的全新功能。希望对大家有所帮助…

使用 Spring Cloud 实现微服务系统

使用 Spring Cloud 实现微服务系统 准备工作&#xff1a;为了方便创建项目&#xff0c;以及各版本以来关系&#xff0c;此次创建项目使用 Spring Assistant插件。 创建单体服务中心项目 启用服务端的服务注册&#xff0c;发现功能 EnableEurekaServer SpringBootApplication pu…

android 小工具:pc 上用 curl 命令打开手机浏览器,浏览指定网址

测试 API 时或其它情况经常需要在手机浏览器中输入 url 一长串的 url 输起来真是麻烦 AirDroid 很强大也不用数据线&#xff0c;但有时老断开连接&#xff0c;不是很爽。发到手机 qq 吧还得手动粘贴 所以自己开发了一个小工具 pc 上用 curl 发一条命令&#xff0c;命令中输入要…

iOS: How To Make AutoLayout Work On A ScrollView

转载自&#xff1a; http://natashatherobot.com/ios-autolayout-scrollview/ Posted on June 11th, 2014 Ok, I’ll admit. I’ve been seriously struggling with AutoLayout ever since it’s been introduced. I understand the concept, and I LOVE the idea of it, but w…

windows 中搭建Zookeeper的搭建

个人博客 &#xff1a;https://www.siyuan.run CSDN&#xff1a;https://blog.csdn.net/siyuan 微信小程序&#xff1a;思远Y 下载 下载地址&#xff1a; https://mirrors.cnnic.cn/apache/zookeeper/ PS&#xff1a;zookeeper 从3.5.5以后的版本带有bin标识的包&#xff0c;否…

Vs Code:Remote SSH

Remote SSH 简介 Remote - SSH 扩展允许您使用任何带有 SSH 服务器的远程计算机作为开发环境。由于几乎每个桌面和服务器操作系统都有可配置的 SSH 服务器&#xff0c;因此该扩展可以在各种情况下大大简化开发。 您可以&#xff1a; 在部署的同一操作系统上进行开发&#xff…

样条之贝塞尔(Bezier)

我曾经发过两篇关于贝塞尔的文章&#xff1a;数学图形(1.47)贝塞尔(Bzier)曲线&#xff0c;数学图形之贝塞尔(Bzier)曲面。那是使用我自己定义的脚本语言生成贝塞尔图形。由于我自己定义的脚本语法功能有限&#xff0c;所以最多只能支持5次贝塞尔函数&#xff0c;而这里将实现N…

设计模式 之 工厂模式

项目源码&#xff1a;https://gitee.com/Jacob-gitee/DesignMode 个人博客&#xff1a;https://jacob.org.cn 女娲造人的故事 东汉《风俗通》记录了一则神话故事&#xff1a;“开天辟地&#xff0c;未有人民&#xff0c;女娲搏黄土做人”&#xff0c;讲述的内容就是大家非常熟…

设计模式 之 单例模式

项目源码&#xff1a;https://gitee.com/Jacob-gitee/DesignMode 个人博客&#xff1a;https://jacob.org.cn 宗旨 Ensure a class has only one instance,and provide a global point of access to it.&#xff08;确保某一个类只有一个实例&#xff0c;而且自行实例化并向整个…

设计模式 之 抽象工厂模式

项目源码&#xff1a;https://gitee.com/Jacob-gitee/DesignMode 个人博客 &#xff1a;https://jacob.org.cn 女娲的失误 工厂模式中讲了女娲造人的故事。人是造出来了&#xff0c;世界也热闹了&#xff0c;可是低头一看&#xff0c;都是清一色的类型&#xff0c;缺少关爱、仇…

设计模式 之 模板模式

项目源码&#xff1a;https://gitee.com/Jacob-gitee/DesignMode 个人博客 &#xff1a;http://jacob.org.cn 女娲的失误 工厂模式中讲了女娲造人的故事。人是造出来了&#xff0c;世界也热闹了&#xff0c;可是低头一看&#xff0c;都是清一色的类型&#xff0c;缺少关爱、仇…

使用Java高速实现进度条

基于有人问到如何做进度条&#xff0c;以下给个简单的做法&#xff1a; 主要是使用JProgressBar&#xff08;Swing内置javax.swing.JProgressBar&#xff09;和SwingWorker&#xff08;Swing内置javax.swing.SwingWorker&#xff09; 有人肯定会说&#xff0c;不是用线程做的吗…

关于js的function.来自百度知道的回答,学习了.

在js中&#xff0c;创建一个函数对象的语法是var myFunction new Function(arg1,…,agrN, body);其中&#xff0c;该函数对象的N个参数放在 函数主体参数body的前面&#xff0c;即函数主体参数必须放在参数列表的最后&#xff0c;也可以无参数new Function(body)。你添加第三个…