学习使用 jQuery 插件的高效路径
一 学习路径与准备
二 使用步骤与基本模式
$(function(){ ... }))调用插件方法,按需传参。$('#selector').pluginName(options);$.fn.pluginName.defaults 上,可直接改写以统一全局行为。<!-- 1) 引入顺序:jQuery -> 插件 -> 你的代码 -->
<script src="jquery.js"></script>
<script src="jquery.cycle.all.js"></script>
<script>
$(function(){
// 2) 调用插件,传入参数
$('#slides').cycle({
timeout: 3000,
speed: 500,
pause: true
});
// 3) 需要时可修改默认值(该插件提供 defaults)
// $.fn.cycle.defaults.timeout = 5000;
});
</script>
要点:引入顺序必须是先 jQuery、后插件;插件通常通过扩展 jQuery 原型来提供方法,调用时 this 指向当前 jQuery 对象。三 常见插件上手示例
<script src="jquery.js"></script>
<script src="jquery.validate.js"></script>
<!-- 中文提示 -->
<script src="jquery.validate.messages_cn.js"></script>
<form id="frm">
<input name="title" required minlength="5" maxlength="18" />
<button type="submit">提交</button>
</form>
<script>
$(function(){
$('#frm').validate({
rules: { title: { required: true, minlength: 5, maxlength: 18 } },
errorPlacement: function(error, element) {
error.appendTo(element.siblings('span'));
}
});
});
</script>
<script src="jquery.js"></script>
<script src="jquery.color.js"></script>
<div style="width:100px;height:100px;background:#f00;"></div>
<script>
$(function(){
// 让 jQuery 支持颜色渐变
$('div').animate({ backgroundColor: '#0ff' }, 2000);
});
</script>
<script src="jquery.js"></script>
<script src="jquery.lazyload.js"></script>
<img class="lazy" data-original="img/01.jpg" alt="示例" />
<script>
$(function(){
$('img.lazy').lazyload();
});
</script>
<!-- 1) 先引入 jQuery UI 的 CSS -->
<link rel="stylesheet" href="jquery-ui.css">
<script src="jquery.js"></script>
<!-- 2) 再引入 jQuery UI 的 JS -->
<script src="jquery-ui.js"></script>
<script>
$(function(){
$('#draggable').draggable();
});
</script>
要点:部分插件需要额外的 CSS;如 jquery.color.js 让 animate 支持颜色渐变;懒加载需把真实地址放在 data-original 上。四 进阶与排错要点
; 以避免压缩合并错误。$=jQuery)。五 从零写一个迷你插件
// 文件:jquery.highlight.js
;(function($) {
// 对象级插件:扩展 $.fn
$.fn.highlight = function(options) {
// 合并默认选项
var opts = $.extend({
color: '#ff0',
duration: 400
}, options);
return this.each(function() {
var $el = $(this);
$el.on('click', function() {
$el.toggleClass('highlight-on')
.stop(true, true)
.animate({ backgroundColor: $el.hasClass('highlight-on') ? opts.color : '' }, opts.duration);
});
});
};
// 类级插件:工具方法
$.utils = $.utils || {};
$.utils.greet = function(name) {
console.log('Hello, ' + name);
};
})(jQuery);
<script src="jquery.js"></script>
<script src="jquery.highlight.js"></script>
<div>点我高亮</div>
<script>
$(function(){
$('div').highlight({ color: '#0ff', duration: 600 });
$.utils.greet('jQuery');
});
</script>
要点:使用闭包隔离 $;对象级插件应遍历匹配元素并返回 this;类级插件挂在 $.utils 等命名空间下,避免污染全局。免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。