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,同时引 ...
随机推荐
- mysql连接超时的问题处理
1. 内网 ts 连接mysql 有时候会连接失败, 原因是 连接超时, 当时所有服务器一起启动,抢占资源,导致连接超过10s. 现在增加一次连接机会, 增加一些日志. 2. 并且对mysql 全局参 ...
- Android Studio 配置快速生成模板代码
前言 Android studio 有提供快速生成模板代码的功能,其实这个功能也可以自定义配置.此篇博客将讲解如何使用此功能 进入Settings 选择 Editor > Live Templa ...
- Python 输入字符串找(String)下标 没有返回-1
str = "abcdefg123456"a = input("请输入一个字母或数字:")num = 0result = -1while num < le ...
- Manager 进程间数据共享
#_author:来童星#date:2019/12/11#Managersfrom multiprocessing import Process, Managerdef f(d, l,n): d[n] ...
- C/C++ ShowWindow()
{ ShowWindow(HWND,0);//不显示窗口 }
- 阿里云Aliplayer高级功能介绍(一):视频截图
基本介绍 H5 Video是不提供截图的API的, 视频截图需要借助Canvas,通过Canvas提供的drawImage方法,把Video的当前画面渲染到画布上, 最终通过toDataURL方法可以 ...
- day28 import,from * import *,__name__
Python之路,Day16 = Python基础16 一 module通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py"." ...
- 通过aapt查看apk包名和第一个启动的activity
步骤: ps:aapt是sdk 自带的一个工具,在sdk\builds-tools目录下: 1. cmd启动控制台, 默认是c盘,输入“d:” 即可转到D盘目录 2. 到D盘后 输入cd 子文件目录转 ...
- 1.2python基础_数字类型_数字(Number)类型
一.整型(int型.整数) 整型 等价于C中的有符号长整型(long) 与系统的最大整型一致(如32位机器上的整型是32位,64位机器上的整型是64位), 可以表示的整数范围在[-sys.maxint ...
- <每日一题>题目3:编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名称写入文件
def log(func): def inner(*args,**kwargs): with open('log',mode='a',encoding='utf-8') as f: #以追加的方式打开 ...