jQuery 플러그인 개발 예시 설명
실제 개발 작업을 하다 보면 스크롤, 페이징, 달력, 기타 디스플레이 효과 등 비즈니스 요구 사항이 항상 발생하게 됩니다. , 가장 먼저 떠오르는 것은 해당 디스플레이 요구 사항을 충족하는 기존 jQuery
플러그인을 찾는 것입니다. 현재 페이지에서 일반적으로 사용되는 일부 구성 요소에는 선택할 수 있는 다양한 jQuery
플러그인이 있습니다. 인터넷에는 특히 jQuery
플러그인을 수집하는 웹사이트도 많이 있습니다. jQuery
플러그인을 사용하면 실제로 개발 작업에 편리함을 가져다 줄 수 있지만, 단순하게만 사용하고 원리를 이해하지 못하면 사용 중에 문제가 발생하거나 플러그인을 맞춤 설정하는 경우가 발생합니다. 개발 과정에서 많은 의문점이 있을 것입니다. 이 글의 목적은 jQuery
플러그인의 개발 원리를 빠르게 이해하고 jQuery
개발의 기본 기술을 익히는 것입니다. jQuery
以及熟悉jQuery
使用的人来说,首先想到的肯定是寻找现有的jQuery
插件来满足相应的展示需求。目前页面中常用的一些组件,都有多种jQuery
插件可供选择,网络上也有很多专门收集jQuery
插件的网站。利用jQuery
插件确实可以给我们的开发工作带来便捷,但是如果只是会简单使用,而对其中的原理不甚了解,那么在使用过程中碰到问题或者对插件进行定制开发时就会有诸多疑惑。本文的目的就是可以快速了解jQuery
插件的开发原理以及掌握jQuery
开发的基本技能。
进行jQuery
插件开发前,首先要知道两个问题:什么是jQuery
插件?jQuery
插件如何使用?
第一个问题,jQuery
插件就是用来扩展jQuery
原型对象的一个方法,简单来说就是jQuery
插件是jQuery
对象的一个方法。其实回答了第一个问题,也就知道第二个问题的答案了,jQuery
插件的使用方式就是jQuery
对象方法的调用。
我们先看个例子:$("a").css("color","red")
。我们知道每个jQuery
对象都会包含jQuery
中定义的DOM
操作方法,这里使用$
方法来选择a
元素,返回一个a
元素的jQuery
对象,这个对象就可以使用jQuery
中定义的DOM
操作方法。那么jQuery
对象是如何获取这些方法的呢?其实jQuery
内部定义了一个jQuery.fn
对象,查看jQuery
源码可以发现jQuery.fn=jQuery.prototype
,也就是说jQuery.fn
对象是jQuery
的原型对象,jQuery
的DOM
操作方法都在jQuery.fn
对象上定义的,然后jQuery
对象就可以通过原型继承这些方法。
基础版jQuery插件
知道了上面这些知识,我们就可以来写一个简单的jQuery
插件。假如我现在需要一个jQuery
插件用来改变标签内容颜色,就可以按下面的方式来实现这个插件:
$.fn.changeStyle = function(colorStr){ this.css("color",colorStr); }
然后按下面的方式来使用插件:$("p").changeStyle("red");
插件调用的时候,插件内部的this
就是当前调用插件的jQuery
对象,这样的话每个使用$()
方法选择的标签,在调用changeStyle()
插件时都会使用css()
方法重设color
样式。
满足链式调用的jQuery插件
链式调用时jQuery
的一大特色,一个通用的插件应该遵循jQuery
风格,满足链式调用要求。实现链式调用的方式也很简单:
$.fn.changeStyle = function(colorStr){ this.css("color",colorStr); return this; }
然后使用的时候就可以链式调用其他方法了:$("p").changeStyle("red").addClass("red-color");
实现链式调用的关键点就一行代码return this
,插件中加了这行代码,那么在插件执行完之后,就会把当前的jQuery
对象返回,然后就可以在插件方法后面继续调用其它jQuery
方法。
防止$符号污染的jQuery插件
有很多js
库都会使用$
符号,虽然jQuery
可以使用jQuery.noConflict()
方法交出$符号的使用权,但是如果定义插件的时候,使用$.fn
对象来定义的,那么这些插件使用的时候就会受到其它使用$
变量的js
库的影响。对于这种情况,我们可以使用立即执行函数通过传参的方式封装插件。形式如下:
(function($){ $.fn.changeStyle = function(colorStr){ this.css("color",colorStr); return this; } }(jQuery));
因为使用了立即执行函数,所以此时的$
只属于这个立即执行函数的函数作用域,这样就可以避免$
jQuery
플러그인을 개발하기 전에 먼저 두 가지 질문을 알아야 합니다. jQuery
플러그인이 무엇인가요? jQuery
플러그인을 사용하는 방법은 무엇입니까? 첫 번째 질문인 jQuery
플러그인은 jQuery
프로토타입 객체를 확장하는 데 사용되는 메서드입니다. 간단히 말하면 jQuery
플러그인입니다. 는 jQuery
객체의 메서드입니다. 실제로 첫 번째 질문에 답한 후에는 두 번째 질문에 대한 답도 알 수 있습니다. jQuery
플러그인을 사용하는 방법은 jQuery
개체 메서드를 호출하는 것입니다. .
$("a").css("color","red")
. 우리는 각 jQuery
객체가 jQuery
에 정의된 DOM
작업 메서드를 포함한다는 것을 알고 있습니다. 여기서는 $
메서드를 사용합니다. a
요소를 선택하면 a
요소의 jQuery
개체가 반환됩니다. 이 개체는 jQuery</에 정의된 <code>를 사용할 수 있습니다. code> >DOM
작업 방법. 그렇다면 jQuery
개체는 이러한 메서드를 어떻게 얻습니까? 실제로 jQuery
는 jQuery.fn
개체를 내부적으로 정의합니다. jQuery
소스 코드를 보면 jQuery.fn=을 찾을 수 있습니다. jQuery.prototype
, 즉 jQuery.fn
개체는 jQuery
의 프로토타입 개체이고 DOM
작업 jQuery
의 메서드는 모두 jQuery.fn
개체에 정의되어 있으며, jQuery
개체는 프로토타입을 통해 이러한 메서드를 상속할 수 있습니다. 기본 jQuery 플러그인🎜위의 지식을 바탕으로 간단한 jQuery
플러그인을 작성할 수 있습니다. 이제 레이블 내용의 색상을 변경하기 위해 jQuery
플러그인이 필요한 경우 다음과 같이 플러그인을 구현할 수 있습니다. 🎜(function($){ $.fn.changeStyle = function(colorStr,fontSize){ this.css("color",colorStr).css("fontSize",fontSize+"px"); return this; } }(jQuery));
$( "p").changeStyle("red");
🎜플러그인이 호출되면 플러그인 내부의 이
가 jQuery
입니다. 이 경우 $()
메서드를 사용하여 선택한 각 태그는 css()
메서드를 사용하여 재설정됩니다. >changeStyle()
플러그인을 색상스타일이라고 합니다. 🎜🎜체인 호출을 충족하는 jQuery 플러그인🎜체인 호출은 jQuery
의 주요 기능입니다. 일반 플러그인은 jQuery
스타일을 따르고 체인 요구 사항을 충족해야 합니다. 부름. 연쇄 호출을 구현하는 방법도 매우 간단합니다: 🎜(function($){ $.fn.changeStyle = function(option){ this.css("color",option.colorStr).css("fontSize",option.fontSize+"px"); return this; } }(jQuery));
$("p").changeStyle("red").addClass("red-color ");
🎜체인 호출을 구현하는 핵심은 return this
코드 줄입니다. 이 코드 줄을 플러그인에 추가하면 플러그인 뒤에 실행되면 현재 jQuery
객체가 반환되며, 플러그인 메서드 이후에 다른 jQuery
메서드를 계속해서 호출할 수 있습니다. 🎜🎜$ 기호 오염을 방지하는 jQuery 플러그인🎜많은 js
라이브러리는 $
기호를 사용하지만 jQuery
는 jQuery를 사용할 수 있습니다. noCon conflict ()
메소드는 $ 기호를 사용할 수 있는 권한을 넘겨주지만, 플러그인이 $.fn
개체를 사용하여 정의된 경우 이러한 플러그인은 다음을 따르게 됩니다. 다른 용도< js
코드 라이브러리>$ 변수의 영향. 이 경우 즉시 실행 기능을 사용하여 매개변수를 전달하여 플러그인을 캡슐화할 수 있습니다. 형태는 다음과 같습니다. 🎜(function($){ $.fn.changeStyle = function(option){ var defaultSetting = { colorStr:"green",fontSize:12}; var setting = $.extend(defaultSetting,option); this.css("color",setting.colorStr).css("fontSize",setting.fontSize+"px"); return this; } }(jQuery));
$
는 이 즉시 실행 함수의 함수 범위에만 속하므로 $</ 코드> 기호는 오염을 피할 수 있습니다. 🎜🎜매개변수를 받을 수 있는 jQuery 플러그인🎜위의 예를 계속해서 이 플러그인에 라벨 요소 콘텐츠의 텍스트 크기를 설정하는 함수를 추가하려는 경우 다음과 같이 수행할 수 있습니다.🎜 <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>(function($){
$.fn.extend({
changeStyle:function(option){
var defaultSetting = { colorStr:"green",fontSize:12};
var setting = $.extend(defaultSetting,option);
this.css("color",setting.colorStr).css("fontSize",setting.fontSize+"px");
return this;
}
});
}(jQuery));</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div>🎜위의 플러그인 매개변수 전달 방법이 적용됩니다. 매개변수가 상대적으로 적은 경우, 플러그인에 전달해야 할 매개변수가 더 많은 경우 매개변수 객체를 정의한 다음 필요한 매개변수를 넣을 수 있습니다. 매개변수 개체의 플러그인에 전달됩니다. 플러그인은 다음과 같이 정의됩니다: 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>(function($){
$.fn.changeStyle = function(option){
this.css("color",option.colorStr).css("fontSize",option.fontSize+"px");
return this;
}
}(jQuery));</pre><div class="contentsignin">로그인 후 복사</div></div><div class="contentsignin">로그인 후 복사</div></div><p>使用方式:<code>$("p").changeStyle({colorStr:"red",fontSize:14});
把参数放到一个对象中传给插件还有一个好处就是我们可以在插件内部为一些参数定义一些缺省值,例如:
(function($){ $.fn.changeStyle = function(option){ var defaultSetting = { colorStr:"green",fontSize:12}; var setting = $.extend(defaultSetting,option); this.css("color",setting.colorStr).css("fontSize",setting.fontSize+"px"); return this; } }(jQuery));
上面的代码用到了$.extend
方法,这个方法在这里的用法就是合并两个对象,即把后面一个对象的存在的属性值赋值给第一个对象,具体用法可以参考这里。$.extend
方法还有一种作用是用来扩展jQuery
对象本身。
这样定义的插件,我们在使用时如果不传fontSize
,那么使用这个插件的jQuery
对象标签的内容会被设置成默认的12px
。
使用方式:$("p").changeStyle({colorStr:"red"});
注意:在为插件定义默认参数时,一定要把默认参数写在插件方法内部,这样默认参数的作用域就在插件内部。
总结
定义插件的方式除了上面说的用$.fn
来定义,还有另外一种方式来定义插件,那就是使用$.fn.extend
方法。类似下面的写法:
(function($){ $.fn.extend({ changeStyle:function(option){ var defaultSetting = { colorStr:"green",fontSize:12}; var setting = $.extend(defaultSetting,option); this.css("color",setting.colorStr).css("fontSize",setting.fontSize+"px"); return this; } }); }(jQuery));
PS:
$.extend
方法和$.fn.extend
方法都可以用来扩展jQuery
功能,通过阅读jQuery
源码我们可以发现这两个方法的本质区别,那就是$.extend
方法是在jQuery
全局对象上扩展方法,$.fn.extend
方法是在$
选择符选择的jQuery
对象上扩展方法。所以扩展jQuery
的公共方法一般用$.extend
方法,定义插件一般用$.fn.extend
方法。
위 내용은 jQuery 플러그인 개발 예시 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 AI 지원 프로그래밍 도구는 급속한 AI 개발 단계에서 유용한 AI 지원 프로그래밍 도구를 많이 발굴했습니다. AI 지원 프로그래밍 도구는 개발 효율성을 높이고, 코드 품질을 향상시키며, 버그 발생률을 줄일 수 있습니다. 이는 현대 소프트웨어 개발 프로세스에서 중요한 보조자입니다. 오늘 Dayao는 4가지 AI 지원 프로그래밍 도구(모두 C# 언어 지원)를 공유하겠습니다. 이 도구가 모든 사람에게 도움이 되기를 바랍니다. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot은 더 빠르고 적은 노력으로 코드를 작성하는 데 도움이 되는 AI 코딩 도우미이므로 문제 해결과 협업에 더 집중할 수 있습니다. 힘내

Chrome 플러그인 확장 프로그램 설치 디렉터리는 무엇인가요? 일반적인 상황에서 Chrome 플러그인 확장의 기본 설치 디렉터리는 다음과 같습니다. 1. windowsxp에서 Chrome 플러그인의 기본 설치 디렉터리 위치: C:\DocumentsandSettings\username\LocalSettings\ApplicationData\Google\Chrome\UserData\ Windows7의 Default\Extensions2.chrome 플러그인의 기본 설치 디렉터리 위치: C:\Users\username\AppData\Local\Google\Chrome\User

사용자가 Edge 브라우저를 사용할 때 더 많은 요구 사항을 충족하기 위해 일부 플러그인을 추가할 수 있습니다. 그런데 플러그인을 추가하면 해당 플러그인이 지원되지 않는다고 표시됩니다. 이 문제를 해결하는 방법은 무엇입니까? 오늘은 에디터가 세 가지 해결 방법을 알려드리겠습니다. 방법 1: 다른 브라우저를 사용해 보세요. 방법 2: 브라우저의 Flash Player가 오래되었거나 누락되어 플러그인이 지원되지 않을 수 있습니다. 공식 웹사이트에서 최신 버전을 다운로드할 수 있습니다. 방법 3: "Ctrl+Shift+Delete" 키를 동시에 누르세요. "데이터 지우기"를 클릭하고 브라우저를 다시 엽니다.

세계 최초의 AI 프로그래머 데빈(Devin)이 태어난 지 한 달도 채 안 된 2022년 3월 3일, 프린스턴 대학의 NLP팀은 오픈소스 AI 프로그래머 SWE-에이전트를 개발했습니다. GPT-4 모델을 활용하여 GitHub 리포지토리의 문제를 자동으로 해결합니다. SWE-bench 테스트 세트에서 SWE-agent의 성능은 Devin과 유사하며 평균 93초가 걸리고 문제의 12.29%를 해결합니다. SWE-agent는 전용 터미널과 상호 작용하여 파일 내용을 열고 검색하고, 자동 구문 검사를 사용하고, 특정 줄을 편집하고, 테스트를 작성 및 실행할 수 있습니다. (참고: 위 내용은 원문 내용을 약간 조정한 것이지만 원문의 핵심 정보는 그대로 유지되며 지정된 단어 수 제한을 초과하지 않습니다.) SWE-A

Go 언어 개발 모바일 애플리케이션 튜토리얼 모바일 애플리케이션 시장이 지속적으로 성장함에 따라 점점 더 많은 개발자가 Go 언어를 사용하여 모바일 애플리케이션을 개발하는 방법을 모색하기 시작했습니다. 간단하고 효율적인 프로그래밍 언어인 Go 언어는 모바일 애플리케이션 개발에서도 강력한 잠재력을 보여주었습니다. 이 기사에서는 Go 언어를 사용하여 모바일 애플리케이션을 개발하는 방법을 자세히 소개하고 독자가 빠르게 시작하고 자신의 모바일 애플리케이션 개발을 시작할 수 있도록 특정 코드 예제를 첨부합니다. 1. 준비 시작하기 전에 개발 환경과 도구를 준비해야 합니다. 머리

Android 개발은 바쁘고 흥미로운 작업이며, 개발에 적합한 Linux 배포판을 선택하는 것이 특히 중요합니다. 많은 Linux 배포판 중에서 Android 개발에 가장 적합한 배포판은 무엇입니까? 이 기사에서는 이 문제를 여러 측면에서 살펴보고 구체적인 코드 예제를 제공합니다. 먼저 현재 인기 있는 여러 Linux 배포판(Ubuntu, Fedora, Debian, CentOS 등)을 살펴보겠습니다. 이들은 모두 고유한 장점과 특징을 가지고 있습니다.

빠르고 효율적인 프로그래밍 언어인 Go 언어는 백엔드 개발 분야에서 널리 사용됩니다. 그러나 Go 언어를 프런트엔드 개발과 연관시키는 사람은 거의 없습니다. 실제로 프런트엔드 개발에 Go 언어를 사용하면 효율성이 향상될 뿐만 아니라 개발자에게 새로운 지평을 열어줄 수도 있습니다. 이 기사에서는 프런트엔드 개발에 Go 언어를 사용할 수 있는 가능성을 살펴보고 독자가 이 영역을 더 잘 이해할 수 있도록 구체적인 코드 예제를 제공합니다. 전통적인 프런트엔드 개발에서는 사용자 인터페이스를 구축하기 위해 JavaScript, HTML, CSS를 사용하는 경우가 많습니다.

"VSCode 이해: 이 도구는 어떤 용도로 사용됩니까?" 》프로그래머로서 초보자이든 숙련된 개발자이든 코드 편집 도구를 사용하지 않으면 할 수 없습니다. 많은 편집 도구 중에서 Visual Studio Code(약칭 VSCode)는 가볍고 강력한 오픈 소스 코드 편집기로 개발자들 사이에서 매우 인기가 높습니다. 그렇다면 VSCode는 정확히 어떤 용도로 사용되나요? 이 기사에서는 VSCode의 기능과 사용법을 자세히 살펴보고 독자에게 도움이 되는 구체적인 코드 예제를 제공합니다.
