jQuery
完全理解jQuery源代码,在前端行业算什么水平?
如何学习jQuery?
逐行分析 jQuery 源码的奥秘
逐行分析jQuery源码
jQuery源码解析(架构与依赖模块)
jQuery源码分析系列
jQuery1.6.1源码分析系列(停止更新)
https://github.com/mumuy/widget
A set of widgets based on jQuery&&javascript.
一套基于jquery或javascript的插件库 :
轮播、标签页、滚动条、下拉框、对话框、搜索提示、城市选择(城市三级联动)、日历等
插件
jQuery插件开发模式
http://www.cnblogs.com/Wayou/p/jquery_plugin_tutorial.html
https://segmentfault.com/a/1190000007076651
jQuery One Page Nav
Owl Carousel 2 -支持触摸屏的响应式jQuery旋转木马插件
http://www.htmleaf.com/jQuery/Slideshow-Scroller/201502161387.html
动态加载无法绑定事件处理
$('body').on("input",'tags',function(e){});
动态添加事件后绑定此事件
让jquery:contains选择器 忽略大小写
使用前重写覆盖一下contains方法即可:
此处优化:contains不再区分大小写
jQuery.expr[':'].Contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
jQuery.expr[':'].contains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
$("#statisticsViewList li").hide().find(".name").filter(":contains('"+name+"')").parents("li").show();
让jquery:contains选择器 忽略大小写
使用前重写覆盖一下contains方法即可:
<%--此处优化:contains不再区分大小写--%>
jQuery.expr[':'].Contains = function(a, i, m) { return jQuery(a).text().toUpperCase() .indexOf(m[3].toUpperCase()) >= 0; }; jQuery.expr[':'].contains = function(a, i, m) { return jQuery(a).text().toUpperCase() .indexOf(m[3].toUpperCase()) >= 0; };
$("#statisticsViewList li").hide().find(".name").filter(":contains('"+name+"')").parents("li").show();
防重复提交
jQuery的 $.ajax防止重复提交的两种方法(推荐)
依赖jQ
$.ajax({
type: 'POST',
url: 'url',
cache:false,
dataType: 'json',
data: {},
async: false,
beforeSend:function(){
//触发ajax请求开始时执行
//改变提交按钮上的文字并将按钮设置为不可点击
//加判断条件,使得不能提交
},
success: function (msg, textStatus)
{
//对上面的判断条件处理,使得能提交
},
error: function (textStatus)
{
},
complete: function(msg, textStatus)
{
}
});
Prefilters是一个预过滤器,在每个请求之前被发送和$.ajax()处理它们前处理。
options 是请求的选项
originalOptions 值作为提供给Ajax方法未经修改的选项,因此,没有ajaxSettings设置中的默认值
jqXHR 是请求的jqXHR对象
以上内容的核心思想是维护一个队列,发送请求时,将请求加入队列,请求响应后,从队列中清除,这就保证了在任一时刻只能有一个同样的请求发送.
局限性:仅仅是前台防止jQuery的ajax请求。对于非jquery的ajax请求,不起作用。因为使用的是jquery的ajaxPreFilter函数,仅仅对jquery的ajax请求有作用。
2)按钮每次点击都会向后端发送请求,下面的demo实现了多次点击按钮之后,只保证最后一次点击的请求能够成功。
var pendingRequests = {};
jQuery.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
var key = options.url;
console.log(key);
if (!pendingRequests[key]) {
pendingRequests[key] = jqXHR;
}else{
//jqXHR.abort(); //放弃后触发的提交
pendingRequests[key].abort(); // 放弃先触发的提交
}
var complete = options.complete;
options.complete = function(jqXHR, textStatus) {
pendingRequests[key] = null;
if (jQuery.isFunction(complete)) {
complete.apply(this, arguments);
}
};
});