扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
jQuery插件 要使用它的话 通常插件中都有demo或者api可以查阅\x0d\x0a通常jQuery插件为了减小体积 会发布两个版本 XXX.js和XXX.min.js\x0d\x0a\x0d\x0a如果你要修改插件需要使用XXX.js文件\x0d\x0a\x0d\x0a首先 你要知道它怎么用,先有一个可用的demo(没有demo就自己写一个),然后用webkit内核或firefox进行断点查看,这主要是为了找插件入口点,当然 你也可以直接查看js代码 这需要一定的底子\x0d\x0a最后 就是慢慢查看他的代码的实现功能了,先得看懂他是怎么实现的,然后你才会知道怎么改.\x0d\x0a\x0d\x0ajQuery插件我也写的不少 像 模拟alert/confirm/prompt 错误信息提示框 模拟弹出窗体 无缝marquee滚动 分页控件 拖拽控件等等\x0d\x0a\x0d\x0ajQuery插件的框架写法通常是\x0d\x0a\x0d\x0a(function($){\x0d\x0a $.fn.extend({\x0d\x0a fnKey:function(){}\x0d\x0a })\x0d\x0a //或者\x0d\x0a $.fn.fnKey=function(){}\x0d\x0a})(jQuery)\x0d\x0a\x0d\x0a上面的两种写法的调用 方式 是\x0d\x0a\x0d\x0a$("XXX").fnKey()进行调用的\x0d\x0a\x0d\x0a还有一种写法:\x0d\x0avar fnClass = function(){\x0d\x0a this.fnKey=function(){\x0d\x0a }\x0d\x0a this.props="";\x0d\x0a}\x0d\x0a\x0d\x0a这种写法是的调用 方式是\x0d\x0afnClass obj = new fnClass();\x0d\x0aobj.fnKey();\x0d\x0a\x0d\x0a第二种写法是js的面向对象编程 得自己慢慢的理解哈
创新互联是一家集网站建设,利通企业网站建设,利通品牌网站建设,网站定制,利通网站建设报价,网络营销,网络优化,利通网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
我自己写过许多插件,应该可以解答你的问题。
其实,所谓的方法,属性,事件,都是你自己总结出来的。对于纯正的JS和JQuary来说,这3个都是一种东西。我们常常用了简便写法,因此楼主才觉得这3者不同,其实这些统统都是变量。
只不过,如果变量是个参数,就是:
var temp = "怪蛋";
如果参数是个数组,那么就是:
var temp = {title:'newTab'};
而我们常见的函数,都会写成getVal(a,b,c){}其实写的更符合JS原生态的,是
var getVal = function(a,b,c){} 从这里看出,我们所谓的函数,其实和变量是一种东西。
因此所谓的$('#id').Tabs({onSelect:functuon(){}});这类情况,等于传入的是一个叫onSelect的变量,而这个变量刚好是一个函数类型而已。事实上这个onSelect原本并不存在,是你后来的插件里去调用了而已。你通过英文意思觉得这是“被选中”的意思,其实在这里,仅仅是一个名字而已。只有插件内部写到$(this).on("click",function(){});才真正调取到JS原本的event的click事件。而我们插件中常见的onSelect、onClick、onSuccess都是写插件的人按照自己的喜好和大家喜欢的名字而命名的。
alert(this.test().p.name);
改成
alert(p.name) 就行了,
至于为什么提示undefined,那是因为你在test里面没有返回show对象,加个return就行了,如
(function($){
$.fn.extend({
test : function(str){
var p = $.extend({
name:"default_name",
value:"default_value"
}, str);
alert(p.name);
var show = function(){
alert(p.value);
}
return {show : show}
}
});
})(jQuery);
$(function(){
$("#b").click(function(){
alert('dddddd')
$(this).test('d').show()
});
});
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流