[url]
http://hi.baidu.com/jjjvzugcpmcdmor/item/0e32a89c36a18544f04215d7
[/url]
$.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效。
如扩展$.fn.abc()
那么你可以这样子:$("#div").abc();
通常使用extend方法扩展,详细请看API.
$.fx是指jquery的特效。
如果使用显示、滑动、淡入淡出、动画等。
$.fx.off可以关闭动画,其实是直接显示结果。
jquery的extend和fn.extend
jQuery为开发插件提拱了两个方法,分别是:
jQuery.fn.extend(object);
jQuery.extend(object);
jQuery.extend(object); 为扩展jQuery类本身.为类添加新的方法。
jQuery.fn.extend(object);给jQuery对象添加方法。
fn 是什么东西呢。查看jQuery代码,就不难发现。
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {//....
//......
};
原来 jQuery.fn = jQuery.prototype.对prototype肯定不会陌生啦。
虽然 javascript 没有明确的类的概念,但是用类来理解它,会更方便。
jQuery便是一个封装得非常好的类,比如我们用 语句 $("#btn1") 会生成一个 jQuery类的实例。
jQuery.extend(object); 为jQuery类添加添加类方法,可以理解为添加静态方法。如:
$.extend({
add:function(a,b){return a+b;}
});
便为 jQuery 添加一个为 add 的 “静态方法”,之后便可以在引入 jQuery 的地方,使用这个方法了,
$.add(3,4); //return 7
jQuery.fn.extend(object); 对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。
比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。可以这么做:
Java代码 $.fn.extend({ alertWhileClick:function(){ $(this).click(function(){ alert($(this).val()); }); } }); $("#input1").alertWhileClick(); //页面上为:<input id="input1" type="text"/>
$("#input1") 为一个jQuery实例,当它调用成员方法 alertWhileClick后,便实现了扩展,每次被点击时它会先弹出目前编辑里的内容。
真实的开发过程中,当然不会做这么小白的插件,事实上jQuery提拱了丰富的操作文档,事件,CSS ,Ajax、效果的方法,结合这些方法,便可以开发出更加 Niubility 的插件。
jquery(function(){})与(function(){}(jQuery)的区别
1.first
jQuery(function(){});
全写为
jQuery(docunemt).ready(function(){
});
意义为在DOM加载完毕后执行ready()方法
2.
(funtion(){
}(jQuery);
实际执行()(para)匿名方法,只不过传递了jQuery对象。
总结:jQuery(funtion(){});用于存放DOM对象的代码,执行其中代码时DOM对象已经存在。
不可用于存放开发插件代码。因为jQuery对象没有得到传递,外部通过jQuery.methodye
调用不来其中方法。
(funtion(){
}(jQuery);用于存放开发插件的代码,执行其中代码DOM不一定存在,直接自动执行DOM操作代码请小心使用
注意:
在这里还有一个特殊的地方,就是在函数开头的地方有jQuery.extend = jQuery.fn.extend,而在程序的前面已经将jQuery.prototype赋值给jQuery.fn了,所以在后面的调用中会出现 jQuery.extend()和jQuery.fn.extend()的不同调用,这两个方法调用产生的结果也不一样,jQuery.extend() 的调用并不会把方法扩展到对象的实例上,引用它的方法也需要通过jQuery类来实现,如jQuery.init(),而 jQuery.fn.extend()的调用把方法扩展到了对象的prototype上,所以实例化一个jQuery对象的时候,它就具有了这些方法,这 是很重要的,在jQuery.js中到处体现这一点
分享到:
相关推荐
在JavaScript和jQuery的世界里,实现图片滚动效果是一个常见的需求,而$.fn是jQuery库中用于扩展功能的关键。本文将深入探讨$.fn的用法以及如何利用它来创建一个图片滚动插件,同时涵盖IIFE(立即执行函数表达式)和...
例如,我们可以使用$.query.get()、$.query.set()等方法来获取或设置页面元素,同时提供了一套完整的筛选、排序和转换机制。 二、主要功能与方法 1. 查询与筛选:$.query.select()和$.query.filter()用于选择和...
4. **动画效果**:jQuery的$.fn.animate()方法可以实现复杂的动画效果,而$.fn.show(), $.fn.hide(), $.fn.fadeIn(), $.fn.slideDown()等方法则提供了常见的显示和隐藏动画。 5. **Ajax交互**:$.ajax()是jQuery...
$.extend($.fn, { livequery: function(type, fn, fn2) { var self = this, q; // Handle different call patterns if ($.isFunction(type)) { fn2 = fn; fn = type; type = undefined; } // See if ...
一旦这两个库都加载完毕,你就可以开始使用`$.query`对象了。在提供的标题和描述中,我们看到一个例子: ```javascript var id = $.query.get("Id"); ``` 这里的`$.query.get("Id")`方法是用来获取URL查询字符串中...
jQuery库提供了一个方便的工具函数`$.query`,可以帮助我们轻松实现这个功能。 首先,我们要理解什么是查询字符串。查询字符串是URL的一部分,位于问号(`?`)之后,用于传递数据到服务器或在页面加载后在客户端...
SQLQuery4.sql
传递参数的方法: 1.Params 由于动态路由也是传递params的,所以在 this...页面通过path和query传递参数,该实例中row为某行表格数据 在目标页面通过this.$route.query获取参数: this.$route.query.row.xxx 以上这篇
插件通常基于jQuery对象,通过`$.fn`(即`$.prototype`)来扩展方法。 **实例与源码分析** 在《锋利的jQuery》这本高清扫描版书中,包含了丰富的实例和源码,可以帮助读者深入理解jQuery的用法。书中不仅介绍了...
首先,Vue Router提供了两种主要的参数传递方式:`query` 和 `params`。 1. **query方式**: - 使用`path`属性指定路由,并通过`query`属性传递参数。 - 示例:`this.$router.push({ path: '/xxx', query: { id...
电商数据库,有七个表,然后再用存储过程做多条件分页!主要就是再拼接字符串,和系统存储过程的使用。还有表与表之间的连接!
SQLQuery1.sql
如果需要传递数据,考虑使用`$router.push`的第二个参数`{params}`或`{query}`,或者通过Vuex存储数据。 综上所述,解决`this.$router.push`无效的问题通常涉及检查路由配置、`this`上下文、守卫逻辑以及URL的正确...
通过`$.fn.extend()`方法,开发者可以创建自己的jQuery插件,实现特定需求。 七、兼容性 jQuery设计时考虑了跨浏览器的兼容性,它能很好地工作在主流的浏览器如Chrome、Firefox、Safari、Edge和IE上,减少了开发者...