问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jquery如何封装插件jquery封装插件的方法

发布网友 发布时间:2023-10-25 18:16

我来回答

1个回答

热心网友 时间:2024-03-22 18:43

如何打包jquery插件

前言

如今,jquery几乎是web开发的必备工具。甚至vs神器在2010年就开始在web项目中内置Jquery和ui。至于使用jquery的好处,这里就不赘述了。用过的我都认识。今天我们来讨论一下jquery的插件机制,jquery有上千个第三方插件。有时候我们写了一个独立的函数,想和jquery结合,可以用jquery链调用。有必要扩展jquery,把它写成插件。例如,下面是一个简单扩展jquery对象的演示:

//sample:扩展jquery对象的方法。bold()用于加粗字体。

(函数($){

$.fn.extend({bold总结/summary

返回this.CSS({fontweight:bold

}

});

})(jQuery);

呼叫方法:

这是一个非常简单的扩展。接下来,我们来一步步分析上面的代码。

首先,jquery的插件机制

为了方便用户创建插件,jquery提供了jQuery.extend()和jQuery.fn.extend()方法。

1.jQuery.extend()方法有一个重载。

JQuery.extend(object),用于扩展JQuery类本身的参数,也就是说在jQuery类/naming空之间添加新的函数,或者调用静态方法。比如jQuery内置的ajax方法都是用jQuery.ajax()调用的,有点像“类名”的静态方法。方法名”。让我们也写一个jQuery.extend(object)的例子:

//扩展jQuery对象本身jQuery.Extend({"minValue:函数(a,b){///总结/summary

返回一个

},总结/summary

returna

}

});//调用

vari=100j=101varmin_v=$。minValue(i,j);//min_v等于100

varmax_v=$。maxValue(i,j);//max_v等于101

重载:jquery.extend([deep],target,object1,[objectn])

用一个或多个其他对象扩展一个对象,并返回扩展的对象。

如果没有指定target,jQuery将被命名为空来扩展自身。这有助于插件作者向jQuery添加新方法。

如果第一个参数设置为true,jQuery返回深度副本,递归地复制它找到的任何对象。否则,副本将与原始对象共享结构。

未定义的属性不会被复制,但从对象原型继承的属性会被复制。

参数

深度:可选。如果设置为true,递归合并。

目标:要修改的对象。

1:要合并到第一个对象中的对象。

ObjectN:可选。要合并到第一个对象的对象。

示例1:

合并设置和选项,修改并返回设置。

var设置={validate:false,limit:5,name:foo

varoptions={validate:true,name:酒吧

jQuery.extend(设置,选项);

结果:

设置=={验证:真,*:5,名称:

vardefaults={validate:false,limit:5,name:foo

varoptions={validate:true,name:酒吧

varsettings=jQuery.extend(空,默认,选项);

结果:

设置=={验证:真,*:5,名称:酒吧

};

原来jQuery.fn=jQuery.prototype,是jQuery对象的原型。那么jQuery.fn.extend()方法就是扩展jQuery对象的原型方法。我们知道在原型上扩展方法相当于给对象增加了一个“成员方法”,而类的“成员方法”只能被类的对象调用,所以使用jQuery.fn.extend(object)扩展的方法,jQuery类的实例就可以使用这个“成员函数”。必须区分jQuery.fn.extend(object)和jQuery.extend(object)方法。

二。自动执行匿名函数/闭包

1.什么是自执行匿名函数?

指的是这样一个函数:(function{//code})();

2.问为什么(function{//code})();可以执行,函数{//code}();你会报错吗?

3.分析

(1).首先明确两者的区别:(function{//code})是表达式,function{//code}是函数声明。

(2).其次,js,因为function(){//code}处于“编译”阶段已经解释过了,js会跳过function(){//code},尝试执行();,所以它会报告一个错误;

js执行到(function{//code})()时;当,因为(function{//code})是表达式,所以js会求解得到返回值。因为返回值是函数,所以遇到();当,它将被执行。

另外,函数转换成表达式的方法不一定要依赖分组运算符(),我们也可以使用void运算符、~operator,!操作员...

例如:

bootstrap框架中插件的编写方法:

!函数($){

//做点什么;

}(jQuery);

(函数($){

//做点什么;

})(jQuery);是一回事。

匿名函数最大的用途是创建闭包(这是JavaScript语言的特点之一),还可以构建命名空空间,减少全局变量的使用。

例如:

vara=1;

(函数()(){

vara=100

})();

警戒(一);//弹出1

更多闭包和匿名函数请查看文章匿名函数和Javascript的自执行。

第三,逐步打包JQuery插件

接下来,我们来写一个高亮的jqury插件。

1.设置封闭区域,防止插件“污染”

//闭包限定在named空(function($){

})(window.jquery);

2.jQuery.fn.extend(object)扩展jQuery方法,制作插件。

//闭包限定在named空(function($){

$.fn.extend({突出显示

})(window.jquery);

3.给出插件默认参数,实现插件功能。

//闭包限定在named空(function($){

$.fn.extend({突出显示//使用jQuery.extend覆盖插件默认参数。

This.each(function(){//这是jQuery对象。

//遍历所有要高亮显示的dom,当是调用highlight()插件的集合时。

var$this=$(this);//获取当前dom的jQuery对象,这里是当前循环的dom

//根据参数设置dom的样式

$this.css({

背景色:opts.background,

颜色:opts.前景

});

});

}

});//默认参数

vardefaluts={

前景:红色,

背景:*

};

})(window.jquery);

至此,高亮插件的基本功能已经具备。调用代码如下:

$(function(){

$(p//调用自定义高亮插件});

只能在这里直接调用,不能在chain中调用。我们知道jQuery可以被链式调用,也就是说,在一个jQuery对象上可以调用多个方法,比如:

$(#id100像素}).addAttr(标题

但是我们上面的插件是不能这样链的。比如:$(p100像素});//会报错找不到css方法,因为我的自定义插件完成函数后没有返回jQuery对象。接下来,返回jQuery对象,这样我们的插件也支持链式调用。(其实很简单,就是在我们执行完我们的插件代码的时候返回jQuery对象,和上面的代码没什么区别)

jquery怎么获取inputfile中的内容?

jquery获取inputfile中内容的方法:;$("#conter").val();//这样就能获取它的值了(也就是内容)。

1.jQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库。jQuery设计的宗旨是“writeLess,DoMore”,即倡导写更少的代码,做更多的事情。它封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。

2.jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件.

插件使用方法?

1.使用script标签加载jquery框架2.使用script标签加载插件3.看插件是否有api,如果有的话按照api调用4.如果没有api,就自己看源码一般来说jquery插件的调用方法都是$('element').plugName(param);其中element是你用选择选择的要执行插件方法的对象,plugName是你插件中的方法名称,param是插件方法的参数。当然,也有的插件不是这样调用的,也有的插件是需要你在html标签中加入以下class。具体还是要看你用的插件的api

详解如何在vue项目里正确地引用jquery和jquery-ui的插件?

vue-cliwebpack全局引入jquery

1、首先在package.json里加入,

然后nmpinstall

2、在webpack.base.conf.js里加入

3、在mole.exports的最后加入

plugins:

4、然后一定要重新rundev

5、在main.js引入就ok了

在.vue文件中引入第三方非NPM模块

vue-cli引入外部文件

在webpack.base.conf.js中添加externals

externals中swiper是键,对应的值一定的是插件swiper.js所定义的变量Swiper:

之后再在根目录下的index.html文件里引入文件:scriptsrc="static/lib/swiper.js">/script>

这样子就可以在需要用到swiper.js的文件里加入这行代码:importSwiperfrom'swiper',这样就能正常使用了。

前端页面的插件有哪些?

工具类

方便操作对象,数组等的工具库

underscore.js

lo-dash与underscore.js的api基本一致。与underscore比其优势是,效率高;可自定义构建

Sugar在原生对象上增加一些工具方法

functional.js提够了一些Curry的支持

Watch.js监视对象或属性的变化

bacon.js函数式编程,cool

streamjs用流的方式来对数组,对象进行系列操作

异步流程控制

eventproxy朴灵出品

Arbiter.js详细

发布订阅

qPromise风格的

Async.js

mock

Mock.js生成随机数据和mockAjax请求

jquery-mockjaxmockajax请求

时间库

moment

datejs

浏览器探测

Bowser探测具体浏览器和版本

ua-parser-js探测具体浏览器和版本,操作系统,设备类型等

调试

console-polyfill能放心的使用console.log()之类的console方法

log让控制台输出的log有样式

Konsole.js在页面的一个元素里输出log信息详细

uri.jsuri操作

cookie增删改cookie的工具库

director前端路由库详细

BigDecimal.js提高精度的数字操作

JSDoc根据javascript文件中注释的信息,生成API文档详细

hotkeys键盘事件的封装

MD5用MD5的方式加密文件的库

浏览器增强类

让一些旧浏览器变牛*的库

Selectivizr让IE6-8一些的css3选择器

ieBetter让ie6-8有高级浏览器的特性

ExplorerCanvas让IE8-的浏览器支持canvas

CSS3Pie让IE6-9支持border-radious,box-shadow,linear-gradient。可以使用.htc文件(注意Minetype)或.js文件。在用Pie.js时,box-radious的元素有背景色时,不显示背景色。。。

formFive让旧的浏览器支持HTML5表单的一些特性,如placeholder,autofocus

https://github.com/anselmh/object-fit让浏览器支持object-fit这css规则

HTML5CrossBrowserPolyfills一堆Polyfills

flexibility让旧的IE也支持Flexbox

选择器增强

Lining.js让浏览器实现类似::nth-line(),::nth-last-line()的效果

未归类

prefixfree用了它,写css时,就不需要加浏览器的前缀了

表单类

jquery-file-upload上传文件组件详细

zTree文件树形视图控件

Treed树编辑器。感觉展示的感觉很像思维导图

FileAPI对文件选择框内的文件的一些处理

表单验证

.Validate详细

jQuery-Validation-Engine

表单元素美化

uniform提供对下拉框,单,复选框,按钮等表单元素的美化

select2多选下拉框

selectivity和unfirom比较类似

DropKick下拉框,单,多选。外观比uniform好

switcheryios7风格的开关组件

nouislider用滚动条来设置/控制(音量等)

range.css美化input元素的外观

图片类

holderjs生成占位图片

lazyload

imagesLoaded选取的图片都加载好后执行调回

CSSgram用CSS3的Filter实现Instagram滤镜的库

图标类

IconFont汇总

SVG做的图标

svgicons

iconic

HYBICON带交互效果。如hover,click

HTML字符实体图标

http://www.amp-what.com/

transformicons图标点击时,会有一些变换效果。如,加号变成叉号

css3patternscss3做的可平铺纹理。浏览器兼容性不好。

浏览图片

fancybox弹出查看图片,视屏等等demo

yoxview弹出查看图片,图片尺寸缩放很自然

图片墙

wookmark

UI框架

WeUI由微信官方设计团队为微信Web开发量身设计。

Framework7

UI组件类

拖拽

dragula支持Draggable,Dropable和Sortable。感觉比jqueryUI的轻量级,好用的样子

angular-draguladragular官方的angular版本

数据可视化(图表)

Echarts百度出品

highcharts功能强大。是收费的。

Plottable.JS基于D3的一个图表库

flot文档不给力

chartJs中文文档demo很漂亮,很清晰。比较轻量级。

ichartJs中国的一个家伙搞的,感觉还不错。

时间选取组件

foundation-datepicker

DatePicker一个简单的日历详细

fullcalendar支持脱放的方式来改变待办事宜的时间

SimpleEventsCalendar外观很喜欢。收费5$

jQueryuidatepicker经典,不是很好看

pickadate轻量级,手机友好的,漂亮。但貌似只能在弹出层中显示,而没有下拉这种方式显示。

zebra-datepicker可配置性很强。但貌似只能在弹出在右上方。。。

bootstrap-datepickerbootstrap风格。

dateRangePicker选取时间段。bootstrap风格。该组件依赖TwitterBootstrap,Moment.js和jQuery.

自定义滚动条

perfectscrollbar轻量级的滚动条。外观与mac上chrome的滚动条一样。

iscroll在移动设备上用不错

加载(Loding)效果

CSSSpinnersCSS做的

Loaders.cssCSS做的

表格组件

jsGridDataGrid。详细

backgrid基于Backbone.js的DataGrid

excellentexport把表格的内容生成excel。兼容Firefox,Chrome,IE6+

datatables表格可交互(对内容进行排序,删除等)

handsontable生成Excel外观的数据

JSpreadsheets表格数据的组件库

选取颜色

Spectrum

分享到SNS

JiaThis生成分享代码。

编辑器

ace代码编辑器,可以用来做demo演示

ckeditor

ueditor百度做的

tinymce对html内容进行实时的编辑

summernote在移动设备上用不错

通知组件

notie.js

HTML5播放器

jwplayer被大量网站使用

html5media简单的h5player,轻量级

jplayer功能强太,可换肤

展示

Impress.js各种旋转,和奇特的体验

fullPage全屏显示。用滚轮来翻页详细

zepto.fullpage专注于移动端的fullPage.js,依赖Zepto

pagePiling和fullPage类似

turn.js做一本书,带漂亮的翻页的效果

幻灯

slidesjs挺好用的,只是那幻灯导航的CSS都要自己写,呵呵详细

iSlider无任何插件依赖的手机平台javascript滑动组件详细

bgstretcher全屏幻灯,会随着页面大小的变化而变化。

Swiper开源、免费、强大的移动端触摸滑动插件Swiper中文网

coin-slider兼容IE6。蛮好的~。不过其切换方式是一块块的。不能配置切换方式。。。

wowslider幻灯切换时各种很炫的效果。收费。

cycle2普通的幻灯,竟然不支持垂直滚动。。。

jcarousel普通的幻灯,不兼容IE6

reveal3d滚动。做ppt相当不错

nodePPT国人做的,做ppt也相当不错。有些方面比reveal做的还好。但生成导出的html有些问题

roundabout3d切换,看的后面图片的边

弹出框

Magnific-Popup兼容PC,Mobile。还不错,有5k+的star

layer国人开发的,兼容ie6+。不喜欢其调用方式。

动画效果

mixitup用漂亮的动画效果来完成排序和筛选

jQuery.Marquee跑马灯效果

quickflip卡片翻转效果

卡片翻转效果2兼容性可以。写的比较简单:1,只支持x方向翻转2,类名都是规定好的3,只能被调用一次。需要改写一下。我的改进版见这里

TheaterJS模拟两个人在屏幕上对话

midnight.js文字颜色随着背景变,_炸了

color-animationjquery的颜色渐变动画插件。jquery的动画不支持颜色值的变化。改库提供了这个支持。

transit对元素进行css的变换

tagcanvas3D标签云效果详细

iconate图片切换动画

Snap.js左/右侧导航的出现效果

CSSshake抖动动画

ClickSpark.js点击后的一些酷炫的效果

视觉差插件

scrollorama比较简单

superscrollorama能做的效果更多,但要用第三方Tween的库,使用

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
5等于1什么 为什么家里会有楼道跑来的猫? 为什么猫咪在屋里会叫呢 我家刚买了个小猫,但一买回来就没影了,今晚在2楼的杂物房听到它的叫声... 猫咪为什么在楼道里哭 唐柳公权书金刚经图书信息 金刚经导读内容简介 诺基亚6120c的飞行模式是什么意思 诺基亚5230 飞行模式是什么意思 张艺薰媒体专访 ps当中调快了GIF图的帧数但是保存之后电脑还是显示图片很慢... 威驰,安全座椅接口在哪 新版三国演义里有个配角演了好多角色3 冰水机冷却器铜管好多铜绿正常吗 话说显卡散热管坏了还有救么 显卡散热器怎么拆11 雅琴MC-100B 电子管 功放 发烧 HIFI胆机 正品怎... 淘宝买衣服不够无门槛优惠券的使用面额要求(100无门槛满10...1 请高手帮忙设计个艺术签名~ 男人真正爱上一个女人,是心理离不开她吗?拜托各位大神4 WWE在广告时候有个宣传片是警告人们不要随便模仿他们,说的是... 信用卡怎么还款,在哪里还?49 究竟对于高危产妇而言,在孕检的时候有什么需要检查的呢? 什么样的男人喜欢什么样的女人拜托各位大神124 我用一斤东北大米磨出来的米浆,再加30克玉米生粉,怎么做出来...56 高手帮忙设计一个艺术签名!3 打印时改变网页字体大小7 关于淘宝优惠券的问题 有很多日用品优惠券 买满100可以直接...2 雅琴胆机推什么牌子音箱合适1 我在网上接了个钻石画,要交押金的。是武汉艺菁风尚钻石画。我想问问... 蒙古族迎接客人时,有“满杯酒满杯茶”的习俗,这有什么讲究吗?2 语文阅读题中环境描写的作用有几种55 如何把真人p成漫画风如何把真人p成漫画风格 我的手机号码换了现在码登不上去怎么办????8 申请ISO14000环境质量体系的流程和前期准备 希望真的有...4 请问南京哪里可以用俄罗斯卢布兑换人民币?谢谢!!1 从中国哪能买到卢布?银行?还是说只能跑到俄罗斯去买? 郭德纲有什么新段子吗?在哪个网站可以看郭德纲相声视频? 有哪些动漫的女主非常傲娇?10 求一首歌名歌词有两句是《苍天将所有凡人捉弄……?…?一天天的...7 android 开发! 怎么修改程序的图标 !在桌面显示的图... 中国银行信用卡怎么还款144 ps cc时间轴做的gif动画,在网页和电脑端看图软件速度很... 请问为什么我用ps制作的gif图 导出来的节奏会慢一点?40 Ashampoo Snap 6录制视频时,只有麦克风录制有声... all saint's day是什么意思 电动玩具汽车那样的遥控器能遥控多远? 网页上的字太小,怎样设置可以放大26 宝宝喝粥的注意事项 因为不小心把爱思助手删掉了,怎么样能在手机上直接下载爱思助手...6