`

query $.fn $.fx是什么意思

    博客分类:
  • JS
 
阅读更多
[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中到处体现这一点
分享到:
评论

相关推荐

    jquery中$.fn和图片滚动效果实现的必备知识总结

    在JavaScript和jQuery的世界里,实现图片滚动效果是一个常见的需求,而$.fn是jQuery库中用于扩展功能的关键。本文将深入探讨$.fn的用法以及如何利用它来创建一个图片滚动插件,同时涵盖IIFE(立即执行函数表达式)和...

    jquery.query.js

    例如,我们可以使用$.query.get()、$.query.set()等方法来获取或设置页面元素,同时提供了一套完整的筛选、排序和转换机制。 二、主要功能与方法 1. 查询与筛选:$.query.select()和$.query.filter()用于选择和...

    jquery-1.4.2.min.rar

    4. **动画效果**:jQuery的$.fn.animate()方法可以实现复杂的动画效果,而$.fn.show(), $.fn.hide(), $.fn.fadeIn(), $.fn.slideDown()等方法则提供了常见的显示和隐藏动画。 5. **Ajax交互**:$.ajax()是jQuery...

    liveQuery源码

    $.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 ...

    jquery_query_js获取url参数

    一旦这两个库都加载完毕,你就可以开始使用`$.query`对象了。在提供的标题和描述中,我们看到一个例子: ```javascript var id = $.query.get("Id"); ``` 这里的`$.query.get("Id")`方法是用来获取URL查询字符串中...

    html页面动态获取连接参数 jquery.params.js

    jQuery库提供了一个方便的工具函数`$.query`,可以帮助我们轻松实现这个功能。 首先,我们要理解什么是查询字符串。查询字符串是URL的一部分,位于问号(`?`)之后,用于传递数据到服务器或在页面加载后在客户端...

    SQLQuery4.sql

    SQLQuery4.sql

    Vue中this.$router.push参数获取方法

    传递参数的方法: 1.Params 由于动态路由也是传递params的,所以在 this...页面通过path和query传递参数,该实例中row为某行表格数据 在目标页面通过this.$route.query获取参数: this.$route.query.row.xxx 以上这篇

    jsquery技术从入门到精通

    插件通常基于jQuery对象,通过`$.fn`(即`$.prototype`)来扩展方法。 **实例与源码分析** 在《锋利的jQuery》这本高清扫描版书中,包含了丰富的实例和源码,可以帮助读者深入理解jQuery的用法。书中不仅介绍了...

    vue.js this.$router.push获取不到params参数问题

    首先,Vue Router提供了两种主要的参数传递方式:`query` 和 `params`。 1. **query方式**: - 使用`path`属性指定路由,并通过`query`属性传递参数。 - 示例:`this.$router.push({ path: '/xxx', query: { id...

    SQLQuery3.sql

    电商数据库,有七个表,然后再用存储过程做多条件分页!主要就是再拼接字符串,和系统存储过程的使用。还有表与表之间的连接!

    SQLQuery1.sql

    SQLQuery1.sql

    解决vue.js this.$router.push无效的问题

    如果需要传递数据,考虑使用`$router.push`的第二个参数`{params}`或`{query}`,或者通过Vuex存储数据。 综上所述,解决`this.$router.push`无效的问题通常涉及检查路由配置、`this`上下文、守卫逻辑以及URL的正确...

    jQuery中文参考文档.rar

    通过`$.fn.extend()`方法,开发者可以创建自己的jQuery插件,实现特定需求。 七、兼容性 jQuery设计时考虑了跨浏览器的兼容性,它能很好地工作在主流的浏览器如Chrome、Firefox、Safari、Edge和IE上,减少了开发者...

Global site tag (gtag.js) - Google Analytics