JS实用插件
1. jQuery鼠标滚轮事件插件Mouse Wheel
下载链接:https://github.com/brandonaaron/jquery-mousewheel/
使用方法:
// using bind
$('#my_elem').bind('mousewheel', function(event, delta) {
console.log(delta);
}); // using the event helper
$('#my_elem').mousewheel(function(event, delta) {
console.log(delta);
});
要注意的是回调函数的第二个参数delta,它响应滚轮的方向,当为负数时表示向下滚动,为正则表示向上滚动。
2. javascript路由插件
Crossroads.js, Director.js或是Sammy.js
推荐Crossroads.js 使用详情google或百度
3. 复制到剪切板插件 zeroclipboard
下载地址:http://zeroclipboard.org/
使用方法:
<div id="click" data-clipboard-text="111111111111">点我复制</div>
if($.browser.msie){
$("#click").click(function(){
var text = $("#click").attr("data-clipboard-text");
clipboardData.setData("Text",text);
});
}else{
window.client = new ZeroClipboard( $("#click"));
}
4. jQuery 实现标点内容自动保存插件sisyphus.js
下载地址:http://sisyphus-js.herokuapp.com/
实用方法:$('form').sisyphus();
设置选项,用户可随意进行设置:
customKeyPrefix:自定义本地存储文件头
timeout:间隔多长时间对数据进行自动保存。如果设置为0,那么所以字段更改都将被自动保存
onSave:每次数据自动保存到本地存储将触发的函数。
onRestore:如果数据从本地存储被恢复,触发的函数。
onBeforeRestore:数据从本地存储恢复之前被触发。 该函数只触发一次
onRelease:本地存储清空之前将触发该函数。
autoRelease:设置本地自动保存的表单数据是否在表单提交或者重置的时候自动清空。 如果设置为false,为自己手动擦除本地存储的数据,插件专门提供了 manuallyReleaseData方法进行擦除。
excludeFields:从选定的表单中排除指定的字段。如$( "textarea, :text" )
name:表单的识别部分。sisyphus本地存储表单文件的名称。默认情况下为当前页面URL地址,是一个确定值。如果一个页面有多个地址,为了获取一致的数据,请设置一个唯一的name值。
例如:下面的代码将对当前页面所有表单每5秒自动进行数据保存:
$('form').sisyphus({timeout: 5});
5. placeholder插件
百度很多这个插件有的ie不管用下面这个是ie有用的
/*! http://mths.be/placeholder v2.0.8 by @mathias */
;(function(window, document, $) { // Opera Mini v7 doesn’t support placeholder although its DOM seems to indicate so
var isOperaMini = Object.prototype.toString.call(window.operamini) == '[object OperaMini]';
var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini;
var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini;
var prototype = $.fn;
var valHooks = $.valHooks;
var propHooks = $.propHooks;
var hooks;
var placeholder; if (isInputSupported && isTextareaSupported) { placeholder = prototype.placeholder = function() {
return this;
}; placeholder.input = placeholder.textarea = true; } else { placeholder = prototype.placeholder = function() {
var $this = this;
$this
.filter((isInputSupported ? 'textarea' : ':input') + '[placeholder]')
.not('.placeholder')
.bind({
'focus.placeholder': clearPlaceholder,
'blur.placeholder': setPlaceholder
})
.data('placeholder-enabled', true)
.trigger('blur.placeholder');
return $this;
}; placeholder.input = isInputSupported;
placeholder.textarea = isTextareaSupported; hooks = {
'get': function(element) {
var $element = $(element); var $passwordInput = $element.data('placeholder-password');
if ($passwordInput) {
return $passwordInput[0].value;
} return $element.data('placeholder-enabled') && $element.hasClass('placeholder') ? '' : element.value;
},
'set': function(element, value) {
var $element = $(element); var $passwordInput = $element.data('placeholder-password');
if ($passwordInput) {
return $passwordInput[0].value = value;
} if (!$element.data('placeholder-enabled')) {
return element.value = value;
}
if (value == '') {
element.value = value;
// Issue #56: Setting the placeholder causes problems if the element continues to have focus.
if (element != safeActiveElement()) {
// We can't use `triggerHandler` here because of dummy text/password inputs :(
setPlaceholder.call(element);
}
} else if ($element.hasClass('placeholder')) {
clearPlaceholder.call(element, true, value) || (element.value = value);
} else {
element.value = value;
}
// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
return $element;
}
}; if (!isInputSupported) {
valHooks.input = hooks;
propHooks.value = hooks;
}
if (!isTextareaSupported) {
valHooks.textarea = hooks;
propHooks.value = hooks;
} $(function() {
// Look for forms
$(document).delegate('form', 'submit.placeholder', function() {
// Clear the placeholder values so they don't get submitted
var $inputs = $('.placeholder', this).each(clearPlaceholder);
setTimeout(function() {
$inputs.each(setPlaceholder);
}, 10);
});
}); // Clear placeholder values upon page reload
$(window).bind('beforeunload.placeholder', function() {
$('.placeholder').each(function() {
this.value = '';
});
}); } function args(elem) {
// Return an object of element attributes
var newAttrs = {};
var rinlinejQuery = /^jQuery\d+$/;
$.each(elem.attributes, function(i, attr) {
if (attr.specified && !rinlinejQuery.test(attr.name)) {
newAttrs[attr.name] = attr.value;
}
});
return newAttrs;
} function clearPlaceholder(event, value) {
var input = this;
var $input = $(input);
if (input.value == $input.attr('placeholder') && $input.hasClass('placeholder')) {
if ($input.data('placeholder-password')) {
$input = $input.hide().next().show().attr('id', $input.removeAttr('id').data('placeholder-id'));
// If `clearPlaceholder` was called from `$.valHooks.input.set`
if (event === true) {
return $input[0].value = value;
}
$input.focus();
} else {
input.value = '';
$input.removeClass('placeholder');
input == safeActiveElement() && input.select();
}
}
} function setPlaceholder() {
var $replacement;
var input = this;
var $input = $(input);
var id = this.id;
if (input.value == '') {
if (input.type == 'password') {
if (!$input.data('placeholder-textinput')) {
try {
$replacement = $input.clone().attr({ 'type': 'text' });
} catch(e) {
$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
}
$replacement
.removeAttr('name')
.data({
'placeholder-password': $input,
'placeholder-id': id
})
.bind('focus.placeholder', clearPlaceholder);
$input
.data({
'placeholder-textinput': $replacement,
'placeholder-id': id
})
.before($replacement);
}
$input = $input.removeAttr('id').hide().prev().attr('id', id).show();
// Note: `$input[0] != input` now!
}
$input.addClass('placeholder');
$input[0].value = $input.attr('placeholder');
} else {
$input.removeClass('placeholder');
}
} function safeActiveElement() {
// Avoid IE9 `document.activeElement` of death
// https://github.com/mathiasbynens/jquery-placeholder/pull/99
try {
return document.activeElement;
} catch (exception) {}
} }(this, document, jQuery));
placeholder.js
使用方法:
添加css样式: .placeholder { color: #aaa; }
6. js获取系统时间
代码:
/**
* get current time form the servers
* @example
* var time=new sysDate()
* time.done(function(timeStamp){
* console.log(timeStamp);
* })
*/
(function(root, factory) {
'use strict';
var sysDate = function() {
return sysDate.init.apply(sysDate, arguments);
};
factory(sysDate);
if (typeof define === 'function' && (define.amd || define.cmd)) {
define(function( /*require, exports*/ ) {
return sysDate;
});
} else {
root.sysDate = sysDate;
}
})(this, function(exp) {
'use strict';
exp.config = {
url: '/'
};
exp.init = function() {
//the first arouments can be:
//{url:'/xxx'}
var arg = arguments[0];
if (typeof(arg) == 'object') {
for (var i in arg) {
exp.config[i] = arg[i];
}
}
exp.get();
return exp;
};
exp.get = function() {
//use xmlhttp to get data form the server
//save to config.lastDate
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
var sysD = xmlhttp.getResponseHeader('Date');
sysD = new Date(sysD);
sysD = Date.parse(sysD);
if (exp.doneFn) {
exp.doneFn(sysD);
}
exp.config.lastDate = sysD;
}
};
exp.done = function(fn) {
if (exp.config.lastDate) {
if (fn) fn(exp.config.lastDate);
} else {
exp.doneFn = fn;
}
};
xmlhttp.open('GET', exp.config.url, true);
xmlhttp.send();
};
});
sysDate
使用方法:
var a=sysDate(option); // 可选字段option, {'url':'/getDate'}
a.done(function(data){ console.log('done',data); // 服务器时间 data 1385003673000' });
详细介绍请看:http://www.zhuwenlong.com/blog/53a9475819a5a13617000001
7. 实现网页截屏html2canvas
下载地址:https://github.com/niklasvh/html2canvas
使用方法:
<script type="text/javascript">
function howuse(){
html2canvas(document.getElementById('email_content'), {
onrendered: function(canvas){
var html_canvas = canvas.toDataURL();
$.post('/report/send_rep_submit', {html_canvas:html_canvas}, function(json){
}, 'json');
}
});
}
</script>
可以这样查看图片:利用canvas.toDataURL();得到的是base64图片数据
<img src=“data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg%3D%3D”/>
8、number插件,只允许输入数字
下载地址 https://github.com/teamdf/jquery-number
JS实用插件的更多相关文章
- Underscore.js实用插件
Underscore 是一个 JavaScript 工具库,它提供了一整套函数式编程的实用功能,但是没有扩展任何 JavaScript 内置对象. 他解决了这个问题:“如果我面对一个空白的 HTML ...
- js模版引擎handlebars.js实用教程
js模版引擎handlebars.js实用教程 阅读本文需要了解基本的Handlebars.js概念,本文并不是Handlebars.js基础教程,而是注重于实际应用,为读者阐述使用过程中可能会遇到的 ...
- Notyf - 超级简单、响应式的 JS 通知插件
通知是网站的常用功能之一,可以用来显示消息.通告.提示等等.Notyf 是一款超级简单.响应式的 JS 通知插件,不依赖 jQuery 库,可以独立使用.赶紧试用一下吧! 在线演示 免费下载 ...
- js日期插件bootstrap-datetimepicker的使用
js日期插件——bootstrap-datetimepicker的使用心得: 在大多说的web项目中,都有日期选择器的使用.如果自己写一个日期选择器的话,费时又费力,而且不一定能写出来_(:3 」∠) ...
- Sublime Text 2 JS 格式化插件 JsFormat的配置使用
(转自http://www.jb51.net/softjc/178401.html) 这里下载这插件包 https://github.com/jdc0589/JsFormat ,点油下角的zip就能下 ...
- Django 的css和js压缩插件:django_compressor
今天尝试了django_conpressor,一个在django框架中压缩css和js的插件,灰常有用 我把它加载在我的base的HTML template中,原来未经压缩的css和js是: < ...
- Android Studio 实用插件整理
首先说一下安装方法: 上图片: 首先点击Android stuido 菜单 File->Settings 进入上图界面: 区域1:你当前已经安装了的插件 区域3:在线安装 区域2:其实和区域3是 ...
- Notepad++ 几款实用插件简介,让你的 Notepad++ 如虎添翼
Notepad++ 是一款非常优秀的文本编辑器,非常适合编辑源代码.Notepad++ 安装时已经附带有 Compare 等优秀插件,通过其 Plugin Manager 可以下载更多实用插件. 一. ...
- knob.js进度插件
关于knob.js进度插件的使用 关于这个插件,妹的,第一次使用坑死爹了,各种不会,幸亏我有持之以恒的精神,最终还是让其臣服于我的胯下.... 1. 引入 head 部分添加knob.js,同时引 ...
随机推荐
- 5、Docker数据管理
为了能够存储持久化数据以及共享容器间的数据,Docker提出了Volume的概念.让我们通过类似mount的方式将宿主机的文件或者目录挂载到容器中. 在容器中管理数据主要有两种方式: 数据卷(Data ...
- BigDecimal踩过的大坑
通常Java中涉及金钱相关的计算为了保持精度,会采用BigDecimal来实现,但是BigDecimal中创建BigDecimal类对象的时候,如果使用直接new的话,必须是String类型的参数,否 ...
- Block的Retain Cycle的解决方法
一个使用Block语法的实例变量,在引用另一个实例变量的时候,经常会引起retain cycle.这个问题在使ASIHTTPRequest的block语法的时候会时不时的碰到.这个问题困扰了我这个小白 ...
- 设置IDEA自动提示补全代码,关于idea自动补全的详细设置。
在IDEA中,默认的代码自动提示不够智能,现在配置成更加智能的方式. File-Settings-Editor-General-Code Completion中 把最上面的大小写敏感度改成none,下 ...
- HTML引入CSS的方法
1.嵌入式 通过<style>标记,来引入CSS样式. 语法格式:<style type = “text/css”></style> 提示:<style> ...
- PAT甲级——A1133 Splitting A Linked List【25】
Given a singly linked list, you are supposed to rearrange its elements so that all the negative valu ...
- import threading线程进程
cpu在执行一个子线程的时候遇到sleep就会利用这段停顿时间去执行另一个子线程.两个子线程谁先跳出sleep就执行谁. import threadingimport time start = tim ...
- ES6和常用特性归纳
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础上,推出JavaScript 2.0. ECMAS ...
- JS流程控制语句 继续循环continue continue的作用是仅仅跳过本次循环,而整个循环体继续执行。
继续循环continue continue的作用是仅仅跳过本次循环,而整个循环体继续执行. 语句结构: for(初始条件;判断条件;循环后条件值更新) { if(特殊情况) { continue; } ...
- Android开发 layer-list详解
参考:https://blog.csdn.net/speverriver/article/details/80925686 挖坑,以后填坑