>웹 프론트엔드 >JS 튜토리얼 >jQuery를 사용하여 더 나은 구성요소 만들기 범용 구성요소 정의

jQuery를 사용하여 더 나은 구성요소 만들기 범용 구성요소 정의

WBOY
WBOY원래의
2016-05-16 18:14:491131검색

이 패턴의 장점:
jQuery 객체, 구성 요소 및 인스턴스 간에 참조를 유지할 수 있습니다.
코드가 명확합니다.
확장하기 쉽습니다.
복잡한 메커니즘을 제거하고 구성 요소를 손으로 완성할 수 있습니다.
마지막 점이 가장 흥미롭습니다. 이 패턴을 따르면 생성자와 프로토타입 메서드를 모두 자유롭게 제어할 수 있습니다. 제거할 수 있는 것은 상속된 해킹이며 심지어 jQuery도 필요하지 않습니다.
손으로 만든 것은 언제나 옳습니다.
간단한 DEMO

코드 복사 코드는 다음과 같습니다.

/*
* @by ambar_li
* @create 2010-11-30
* 태그 선택, 확인
*/
(function($){
var tagSelector = function( input,options){
var me = this;
var opt = me.opt = $.extend({
limit : 5
,tags : null
,delimiter : ','
}, 옵션 || {});
var $el = me.input = $(input)
var $tags = $(opt.tags); 🎜>if (!$el.length || !$tags.length) return;
$tags.click(function(e){
e.preventDefault();
var tag = $(this ).text ();
me[me.has(tag)?'remove':'add'](tag)
}
tagSelector.prototype = {
추가: 함수(태그){
if(태그){
var me = this, Tags = me.get(), del = me.opt.delimiter
tags.push(tag) ;
me.input.val( tagged.join(del) );
}
return me
}
,remove : function(tag){
var me = this ,exist = function(v){ return v !=tag; };
me.input.val( $.grep(me.get(),exist) )
return me; 🎜>, cleanify : function(){
return this.remove();
}
,limit : function(){
var me = this, Tags = me.cleanify().get ()
,len = tagged.length, max = me.opt.limit;
if(len>max){
me.input.val(tag.slice(0,max) ); 🎜>}
return me;
}
,has: function(tag){
return $.inArray(tag,this.get())
}
, get : function(){
var val = $.trim(this.input.val())
return val ? $.map( val.split(/[,,] /), $.trim ) : [];
}
};
$.fn.tagSelector = function(options){
return this.each(function(){
$(this) .data( 'tagSelector',new tagSelector(this,options));
}
})(jQuery)


마지막 단락.
jQueryUI 비교, 초기화 확인이 있습니다:



코드 복사

코드는 다음과 같습니다: this.each(function() { var 인스턴스 = $.data( this, name ); if ( 인스턴스 ) { instance.option( 옵션 || {} )._init() ;
} else {
$.data( this, name, new object( options, this ) )


두 가지 호출 방법




코드 복사

코드는 다음과 같습니다.
var $input = $('#tb_tags' ).tagSelector( { 태그 :'div.tag_group a:not(.btn_tag_more)'} ) var api = $input.data('tagSelector') // var api = new tagSelector(' #tb_tags',{ 태그 :'div.tag_group a:not(.btn_tag_more)' }) 전체 데모:





손쉬운 태그 선택
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.