1. 把你的代码全部放在闭包里面

这是我用的最多的一条。但是有时候在闭包外面的方法会不能调用。

不过你的插件的代码只为你自己的插件服务,所以不存在这个问题,你可以把所有的代码都放在闭包里面。 而方法可能应该放在Prototype方法内部。

/注意为了更好的兼容性,开始前有个分号
;(function($){ //此处将$作为匿名函数的形参
/*这里置放代码,可以使用$作为jQuery的缩写别名*/
})(jQuery); //这里将jQuery作为实参传递给匿名函数了
<script>
//插件编写
;(function(){
$.fun.extend({
"color":function(value){
return this.css('color',value);
}
});
})(jQuery); //插件应用
$(function(){
alert($('div').color('red'));
});
</script> <div class='a'>red</div>
<div style="color:blue">blue</div>

$.fn.extend

$.fn就是jQuery的原型,$.fn等于jQuery.prototype,$是jQuery的别名。$.fn.extend方法的作用是用于扩展jQuery实例对象,也就是我们从页面中获得的jQuery对象。

插件:一个函数

(function($) {

    $.fn.pluginName = function(options) {

// 代码在此处运行

        return this;
} })(jQuery);

  上面的代码中的函数可以像其他的jQuery函数那样通过$('#element’).pluginName()来调用。注意,我是如何把“return this”语句加进去的;这小片的代码通过返回一个原来元素的集合(包含在this当中)的引用来产生链式调用的效果,而这些元素是被一个jQuery对象所包裹的。你也应该注意,“this”在这个特定的作用域中是一个jQuery对象,相当$(‘#element’)。

  根据返回的对象,我们可以总结出,在上面的代码中,使用$(‘#element’).pluginName()的效果和使用$(‘#element’)的效果是一样的。在你的即时执行函数作用域中,没必要用$(this)的方式来把this包裹到一个jQuery对象中,因为this本身已经是被包装好的jQuery对象。

http://www.runoob.com/w3cnote/jquery-10-skill.html

最新文章

  1. 十一个行为模式之迭代器模式(Iterator Pattern)
  2. iOS的网络环境判断
  3. 未能加载文件或程序集“MySQLDriverCS
  4. 一些比较实用的javascript方法收集,留着有用
  5. UITableViewCell高度自适应探索--AutoLayout结合Frame
  6. Javascript之简单按钮搜索功能
  7. ASP.NET 发送email
  8. 4 常量类--Map常量
  9. EXT.NET复杂布局(二)——报表
  10. Git命令行管理代码、安装及使用
  11. cpu工作原理
  12. Unity读Excel 输出PC端(Windows)后不能读取的问题
  13. BZOJ2157旅游——树链剖分+线段树
  14. 使用 IntraWeb (33) - Cookie
  15. P2617 Dynamic Rankings(树状数组套主席树)
  16. centos实现两种秒级任务的简单方法
  17. 关于ip判断
  18. testng入门教程5TestNG套件测试
  19. Opencv2.4.9安装和在visualstudio 2013中配置
  20. 解决Eclipse里项目名有红叉,但是底下的每一个文件都没有红叉

热门文章

  1. 简单对比一下不同Windows操作系统在相同硬件配置的情况下浏览器js引擎的性能
  2. IntersectionObserver简介
  3. 通过几个例子看sed的模式空间与保持空间
  4. linux shell $ 特殊变量
  5. sql 数据库(表空间),用户 相关命令
  6. 在做销售录入界面时,如何使用dbgrid?(50分)
  7. html 文档类型
  8. BZOJ3028 食物(生成函数)
  9. 微信access_token请求之简单缓存方法封装
  10. 修改input的text 通过jquery的html获取值 未变化