jQueryUI如何自定义组件实现代码_jquery
首先用$.widget()方法开始定义你的组件,它只接收三个参数:第一个是组件名称,第二个是可选的基类组件(默认的基类是$.Widget),第三个是组件的原型。
组件名称必须包含命名空间,要注意的是,官方组件的命名空间是以‘ui'开头的,比如:‘ui.tabs'。我在下面的用‘我'的拼音(‘wo')。
$.widget("yourNamespace.yourWidgetName",[yourBaseWidget],yourWidgetPrototype)
$.Widget基类含有一个重要的属性‘options',它用来定义公有参数,组件初始化时外部调用的参数会覆盖内部定义的参数;以及三个重要的私有的方法‘_create'、‘_init'、‘',前两个相当于构造函数的作用,按顺序执行,_create()方法执行之后会触发'create'事件。 _trigger()方法会将参数中的指定函数标准化为W3C事件,并且触发这个自定义事件。
另外还有三个公有方法‘enable',‘disable',‘destroy',分别表示启用、禁用和销毁组件。
这里很有意思的,是私有方法和公有方法的实现。jQuerUI Widget暴露的方法都是不以‘_'开头的:
// prevent calls to internal methods
if ( isMethodCall && options.charAt( 0 ) === "_" ) {
return returnValue;
}
实际上,jQueryUI Widget还是保留了原始的API,比如这样使用:
var $div = $('.demo:first');
var api = $div.data('divZoom');
// console.dir(api);
api.zoomIn();
// 对比
$div.divZoom('zoomIn');
一个实现完全私有变量的小技巧:
(function($) {
var privateVar = '';
$.widget("wo.divZoom",{});
})(jQuery)
所有代码
/*
* @by ambar
* @create 2010-10-20
* @update 2010-10-25
*/
(function($) {
var html = '
zoom in\
zoom out\
$.widget("wo.divZoom",{
_init : function() {
var self = this, opt = self.options, tgt = opt.target, $el = self.element ;
// 初始一次
if($('div.icon-zoom',$el).length) return;
$el.append(html);
self.target = ( tgt == '' ? $el : $el.find(tgt) );
// 检测初始值
var level = self.target.attr(opt.dataPrefix);
self.target.attr(opt.dataPrefix,level || opt.level[0]);
self.btnZoomIn = $el.find('span.zoom-in').click( $.proxy(self.zoomIn,self) );
self.btnZoomOut = $el.find('span.zoom-out').click( $.proxy(self.zoomOut,self) );
},
destroy : function(){
this.element.find('div.icon-zoom').remove();
},
options : {
level : [120,160,200],
target : '',
speed : 'normal',
dataPrefix : 'data-zoom-level',
zooming : null,
select : null,
show : null
},
currentLevel : function(){
var self = this, opt = self.options, lvl = Number(self.target.attr(opt.dataPrefix));
return $.inArray(lvl,opt.level);
},
zoomIn : function() {
this.zoom(this.currentLevel() + 1);
},
zoomOut : function() {
this.zoom(this.currentLevel() - 1);
},
zoom : function(i){
var self = this, opt = self.options,lvls = opt.level,$tgt = self.target;
if( i=lvls.length ) return;
var value = lvls[i],
originalValue = lvls[self.currentLevel()],
style = { width:value, height:value };
var data = { target : $tgt, css : style, originalCss : {width:originalValue,height:originalValue} };
var goon = self._trigger('start',null,data);
if(!goon) return;
$tgt.animate(style,
{
duration : opt.speed,
step : function(val) {
var css = { width:val, height:val };
self._trigger('zooming',null,$.extend({},data,{css:css}));
},
complete : function(){
$tgt.attr(opt.dataPrefix,value);
self._trigger('stop',null,data);
}
});
}
});
})(jQuery)
在页面上调用
示例代码:

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Vue.js ialah rangka kerja JavaScript sumber terbuka yang sangat popular dalam bidang pembangunan bahagian hadapan moden Ia memudahkan banyak masalah dalam proses pembangunan bahagian hadapan dan menjadikannya lebih mudah untuk membangunkan aplikasi yang kompleks melalui pembangunan komponen. Salah satu ciri yang sangat berguna ialah dengan mudah melaksanakan pengikatan data dua hala dalam komponen menggunakan arahan model-v. Walaupun Vue.js menyediakan banyak komponen input terbina dalam, jika anda memerlukan komponen input tersuai, anda boleh memenuhinya dengan melaksanakan komponen tersuai model v.

UniApp ialah rangka kerja pembangunan merentas platform berdasarkan Vue.js, yang boleh membangunkan aplikasi untuk berbilang platform secara serentak seperti program mini, H5 dan App. Dalam UniApp, kami boleh menggunakan komponen tersuai untuk mencapai penggunaan semula halaman dan meningkatkan kecekapan pembangunan. Berikut akan memperkenalkan cara menggunakan komponen tersuai untuk mencapai penggunaan semula halaman dan memberikan contoh kod. 1. Buat komponen tersuai Pertama, buat folder baharu dalam direktori komponen projek UniApp dan namakannya tersuai.

UniApp ialah rangka kerja pembangunan merentas platform berdasarkan Vue.js Ia boleh merealisasikan pembangunan berbilang terminal (termasuk apl, program mini, H5 dan platform lain) melalui satu set kod. Berbanding dengan pembangunan asli tradisional, UniApp menyediakan cara yang lebih cekap dan mudah untuk membangunkan aplikasi merentas platform. Dalam artikel ini, kami akan memperkenalkan cara UniApp melaksanakan pembangunan komponen dan modul tersuai, serta memberikan kaedah reka bentuk dan pembangunan yang sepadan. 1. Kaedah reka bentuk dan pembangunan komponen tersuai Reka bentuk komponen: Pertama, kita perlu mentakrifkan komponen tersuai dengan jelas

Langkah dan langkah berjaga-jaga untuk menggunakan fungsi Vue.extend untuk menyesuaikan komponen Dalam Vue.js, anda boleh menyesuaikan komponen dengan mudah menggunakan fungsi Vue.extend. Komponen tersuai membolehkan kami mencipta komponen boleh guna semula berdasarkan keperluan perniagaan dan memanggilnya di tempat yang berbeza. Artikel ini akan memperkenalkan langkah-langkah untuk menggunakan fungsi Vue.extend untuk menyesuaikan komponen dan beberapa perkara yang perlu diberi perhatian, dan menunjukkannya melalui contoh kod. Langkah 1: Import fungsi Vue.js dan Vue.extend untuk memulakan kumpulan tersuai

Kaedah dan contoh komponen tersuai menggunakan fungsi Vue.extend Vue ialah rangka kerja JavaScript yang popular untuk membina antara muka pengguna. Ia menyediakan cara yang mudah dan intuitif untuk mencipta komponen boleh guna semula dan boleh gubah. Cara standard untuk mentakrifkan komponen dalam Vue ialah menggunakan fungsi Vue.component, tetapi dalam beberapa kes kita mungkin perlu mencipta komponen secara dinamik. Vue menyediakan fungsi Vue.extend untuk membantu kami mencapai matlamat ini. Vue.exten

Sebagai rangka kerja JavaScript yang biasa digunakan, Vue menyediakan alatan yang sangat mudah dan berkuasa untuk memproses input borang. Vue menyediakan sifat dan peristiwa reaktif yang membolehkan kami mengendalikan input, pengesahan dan penyerahan borang dengan mudah. Artikel ini akan memperkenalkan cara melaksanakan borang responsif dan komponen borang tersuai di bawah Vue. 1. Pelaksanaan borang responsif Vue Model Borang yang mengikat Vue menyediakan cara yang sangat mudah untuk melaksanakan input data borang dan respons automatik. Melalui arahan model-v, kita boleh menukar borang

: 1. Gambaran Keseluruhan Servlet Servlet ialah komponen pengaturcaraan bahagian pelayan yang digunakan secara meluas dalam pembangunan JAVAWEB Berbanding dengan skrip CGI tradisional seperti CGI, ia mempunyai banyak kelebihan. Pertama sekali, Servlet adalah berdasarkan teknologi Java, jadi ia boleh disepadukan dengan mudah ke dalam aplikasi JavaEE. Kedua, komponen Servlet boleh digunakan semula, yang membantu meningkatkan kecekapan pembangunan dan kualiti kod. 2. Sambungan Servlet Servlet bukan komponen yang tidak boleh diubah Pembangun boleh memanjangkannya mengikut keperluan mereka sendiri untuk mencapai fungsi tertentu. Terdapat terutamanya cara berikut untuk melanjutkan Servlet: Mewarisi kelas Servlet: Ini adalah cara paling mudah, pembangun boleh mewarisi kelas Servlet

Vue3 ialah rangka kerja JavaScript yang sangat berkuasa, terasnya ialah contoh dan komponen Vue. Kejadian Vue dibuat dengan pilihan yang ditentukan dan komponen ditakrifkan oleh API komponen Vue. Fungsi createClass dalam Vue3 ialah salah satu daripada API komponen. Apakah fungsi createClass? Fungsi createClass Vue3 menyediakan cara deklaratif untuk menentukan komponen. Ini adalah konsep yang sangat penting kerana ia memberi peluang untuk penggunaan semula komponen dan
