完全理解jQuery源代码,在前端行业算什么水平?
如何学习jQuery?
逐行分析 jQuery 源码的奥秘
逐行分析jQuery源码
jQuery源码解析(架构与依赖模块)
jQuery源码分析系列
jQuery1.6.1源码分析系列(停止更新)

https://github.com/mumuy/widget
A set of widgets based on jQuery&&javascript.
一套基于jquery或javascript的插件库 :

轮播、标签页、滚动条、下拉框、对话框、搜索提示、城市选择(城市三级联动)、日历等 

https://jquerywidget.com/

妙味课堂 jQuery集训营课程大纲

插件

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();



防重复提交

怎样防止重复发送 Ajax 请求?

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);
    }
    };
});

标签:插件, JavaScript, jQuery, JS

你的评论