国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim php教程 PHP開發(fā) jQuery-Plug-in-Kapselungsmethode

jQuery-Plug-in-Kapselungsmethode

Dec 06, 2016 pm 03:52 PM
jquery

Das Erweitern von jQuery-Plug-Ins und -Methoden ist sehr leistungsf?hig und kann viel Entwicklungszeit sparen. In diesem Artikel werden die Grundlagen, Best Practices und h?ufigen Fallstricke bei der Entwicklung von jQuery-Plugins beschrieben.

1. Erste Schritte

Das Schreiben eines jQuery-Plugins beginnt mit dem Hinzufügen eines neuen Funktionsattributs zu jQuery.fn. Der Name des hier hinzugefügten Objektattributs ist der Name Ihres Plug-ins :

. Der Code lautet wie folgt:

jQuery.fn.myPlugin = function(){
//你自己的插件代碼
};

Wo sind die Symbole, die den Benutzern sehr gefallen? Es existiert noch, aber um Konflikte mit anderen JavaScript-Bibliotheken zu vermeiden, ist es besser, jQuery an ein selbstausführendes geschlossenes Programm zu übergeben, in dem jQuery als Symbol abgebildet wird, um zu verhindern, dass das $-Zeichen von anderen Bibliotheken überschrieben wird .

. Der Code lautet wie folgt:

(function ($) {
$.fn.myPlugin = function () {
//你自己的插件代碼
};
})(jQuery);

In diesem geschlossenen Programm k?nnen wir das $-Symbol ohne Einschr?nkung verwenden, um jQuery darzustellen Funktionen.

2. Umgebung

Jetzt k?nnen wir mit dem Schreiben des eigentlichen Plug-in-Codes beginnen. Zuvor müssen wir jedoch eine Vorstellung von der Umgebung haben, in der sich das Plug-in befindet. Im Geltungsbereich des Plug-ins stellt das Schlüsselwort this das jQuery-Objekt dar, das das Plug-in ausführt. Hier kann es leicht zu Missverst?ndnissen kommen, da das Schlüsselwort this in anderen jQuery-Funktionen, die Rückrufe enthalten, das native DOM-Element darstellt . Dies führt h?ufig dazu, dass Entwickler das Schlüsselwort this f?lschlicherweise unn?tigerweise in jQuery einschlie?en, wie unten gezeigt.

. Der Code lautet wie folgt:

(function ($) {
$.fn.myPlugin = function () {
//此處沒有必要將this包在$號(hào)中如$(this),因?yàn)閠his已經(jīng)是一個(gè)jQuery對(duì)象。
//$(this)等同于 $($('#element'));
this.fadeIn('normal', function () {
//此處callback函數(shù)中this關(guān)鍵字代表一個(gè)DOM元素
});
};
})(jQuery);
$('#element').myPlugin();

3. Grundkenntnisse

Jetzt verstehen wir die Grundlagen Wissen Sie, was das jQuery-Plugin betrifft? Schreiben wir ein Plugin, das etwas tut.

. Der Code lautet wie folgt:

(function ($) {
$.fn.maxHeight = function () {
var max = 0;
this.each(function () {
max = Math.max(max, $(this).height());
});
return max;
};
})(jQuery);
var tallest = $('div').maxHeight(); //返回高度最大的div元素的高度
   
這是一個(gè)簡(jiǎn)單的插件,利用.height()返回頁面中高度最大的div元素的高度。

4. Verkettbarkeit beibehalten

Oft besteht die Absicht eines Plug-Ins nur darin, die gesammelten Elemente zu ?ndern auf irgendeine Weise und übergeben Sie sie an die n?chste Methode in der Kette. Das ist das Sch?ne am jQuery-Design und einer der Gründe, warum jQuery so beliebt ist. Um die Verkettbarkeit eines Plugins aufrechtzuerhalten, müssen Sie daher sicherstellen, dass Ihr Plugin das Schlüsselwort this zurückgibt.

. Der Code lautet wie folgt:

(function ($) {
$.fn.lockDimensions = function (type) {
return this.each(function () {
var $this = $(this);
if (!type || type == 'width') {
$this.width($this.width());
}
if (!type || type == 'height') {
$this.height($this.height());
}
});
};
})(jQuery);
$('div').lockDimensions('width').CSS('color', 'red');

Da das Plugin dieses Schlüsselwort zurückgibt, beh?lt es die Verkettbarkeit bei, sodass die von jQuery kann weiterhin durch jQuery-Methoden wie .css gesteuert werden. Wenn Ihr Plugin daher keinen intrinsischen Wert zurückgibt, sollten Sie das Schlüsselwort this immer innerhalb seines Gültigkeitsbereichs zurückgeben. Darüber hinaus k?nnen Sie daraus schlie?en, dass an ein Plugin übergebene Parameter innerhalb des Gültigkeitsbereichs des Plugins übergeben werden. Daher wird im vorherigen Beispiel die Zeichenfolge ?width“ zu einem Typparameter des Plugins.

5. Standardwerte und Optionen

Für komplexere Plug-Ins, die viele anpassbare Optionen bieten, ist es am besten, eine Standardeinstellung zu haben, die erweitert werden kann, wenn das Plug-In verfügbar ist aufgerufen (Durch Verwendung von $.extend). Anstatt also ein Plugin mit einer Reihe von Parametern aufzurufen, k?nnen Sie es mit einem Objektparameter aufrufen, der die Einstellungen enth?lt, die Sie überschreiben m?chten.

. Der Code lautet wie folgt:

(function ($) {
$.fn.tooltip = function (options) {
//創(chuàng)建一些默認(rèn)值,拓展任何被提供的選項(xiàng)
var settings = $.extend({
'location': 'top',
'background-color': 'blue'
}, options);
return this.each(function () {
// Tooltip插件代碼
});
};
})(jQuery);
$('div').tooltip({
'location': 'left'
});

In diesem Beispiel wird die Standortoption in den Standardeinstellungen beim Aufrufen überschrieben Tooltip-Plugin. Die Option ?Hintergrundfarbe“ bleibt auf ihrem Standardwert, daher lautet der endgültige aufgerufene Einstellungswert:

Der Code lautet wie folgt:

{
'location': 'left',
'background-color': 'blue'
}

Dies ist eine sehr flexible M?glichkeit, ein hochgradig konfigurierbares Plugin bereitzustellen, ohne dass der Entwickler alle verfügbaren Optionen definieren muss.

6. Namespace

Die richtige Benennung Ihres Plug-Ins ist ein sehr wichtiger Teil der Plug-In-Entwicklung. Mit dem richtigen Namespace k?nnen Sie garantieren, dass die Wahrscheinlichkeit, dass Ihr Plugin von anderen Plugins oder anderem Code auf derselben Seite überschrieben wird, sehr gering ist. Namespaces erleichtern Ihnen auch das Leben als Plugin-Entwickler, da sie Ihnen dabei helfen, den überblick über Ihre Methoden, Ereignisse und Daten zu behalten.

7. Plug-in-Methoden

In jedem Fall sollte ein einzelnes Plug-in nicht mehrere Namespaces im jQuery.fnjQuery.fn-Objekt haben.

. Der Code lautet wie folgt:

(function ($) {
$.fn.tooltip = function (options) {
// this
};
$.fn.tooltipShow = function () {
// is
};
$.fn.tooltipHide = function () {
// bad
};
$.fn.tooltipUpdate = function (content) {
// !!!
};
})(jQuery);

Dies wird nicht empfohlen, da .fn den .fn-Namespace überfüllt. Um dieses Problem zu l?sen, sollten Sie alle Methoden des Plugins im Objekttext sammeln und sie aufrufen, indem Sie den Stringnamen der Methode an das Plugin übergeben.

. Der Code lautet wie folgt:

(function ($) {
var methods = {
init: function (options) {
// this
},
show: function () {
// is
},
hide: function () {
// good
},
update: function (content) {
// !!!
}
};
$.fn.tooltip = function (method) {
// 方法調(diào)用
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method' + method + 'does not exist on jQuery.tooltip');
}
};
})(jQuery);
//調(diào)用init方法
$('div').tooltip();
//調(diào)用init方法
$('div').tooltip({
foo: 'bar'
});
// 調(diào)用hide方法
$(‘div').tooltip(‘hide');
//調(diào)用Update方法
$(‘div').tooltip(‘update', ‘This is the new tooltip content!');

Diese Art von Plug-in-Architektur erm?glicht es Ihnen, alle Methoden im übergeordneten Element zu kapseln Paket, indem Sie den Zeichenfolgennamen der Methode und die zus?tzlichen Parameter übergeben, die diese Methode zum Aufrufen ben?tigt. Diese Art der Kapselung und Architektur ist Standard in der jQuery-Plug-in-Community und wird von unz?hligen Plug-ins verwendet, einschlie?lich Plug-ins und Widgets in der jQuery-Benutzeroberfl?che.

8. Ereignisse

Eine wenig bekannte Funktion der Bind-Methode erm?glicht das Binden von Ereignis-Namespaces. Wenn Ihr Plugin ein Ereignis bindet, empfiehlt es sich, diesem Ereignis einen Namensraum zuzuweisen. Auf diese Weise beeintr?chtigen Sie beim Aufheben der Bindung keine anderen Ereignisse desselben Typs, die m?glicherweise bereits gebunden sind. Sie k?nnen dies tun, indem Sie den Namespace über ?.“ an das Ereignis anh?ngen, das Sie binden m?chten.

Der Code lautet wie folgt:

(function ($) {
var methods = {
init: function (options) {
return this.each(function () {
$(window).bind('resize.tooltip', methods.reposition);
});
},
destroy: function () {
return this.each(function () {
$(window).unbind('.tooltip');
})
},
reposition: function () {
//...
},
show: function () {
//...
},
hide: function () {
//...
},
update: function (content) {
//...
}
};
$.fn.tooltip = function (method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || !method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.tooltip');
}
};
})(jQuery);
$('#fun').tooltip();
//一段時(shí)間之后… …
$(‘#fun').tooltip(‘destroy');

在這個(gè)例子中,當(dāng)tooltip通過init方法初始化時(shí),它將reposition方法綁定到resize事件并給reposition非那方法賦予命名空間通過追加.tooltip。 稍后, 當(dāng)開發(fā)人員需要銷毀tooltip的時(shí)候,我們可以同時(shí)解除其中reposition方法和resize事件的綁定,通過傳遞reposition的命名空間給插件。 這使我們能夠安全地解除事件的綁定并不會(huì)影響到此插件之外的綁定。

九、數(shù)據(jù)

通常在插件開發(fā)的時(shí)候,你可能需要記錄或者檢查你的插件是否已經(jīng)被初始化給了一個(gè)元素。 使用jQuery的data方法是一個(gè)很好的基于元素的記錄變量的途徑。盡管如此,相對(duì)于記錄大量的不同名字的分離的data, 使用一個(gè)單獨(dú)的對(duì)象保存所有變量,并通過一個(gè)單獨(dú)的命名空間讀取這個(gè)對(duì)象不失為一個(gè)更好的方法。

. 代碼如下:

(function ($) {
var methods = {
init: function (options) {
return this.each(function () {
var $this = $(this),
data = $this.data('tooltip'),
tooltip = $(&#39;<div />&#39;, {
text: $this.attr(&#39;title&#39;)
});
// If the plugin hasn&#39;t been initialized yet
if (!data) {
/*
Do more setup stuff here
*/
$(this).data(&#39;tooltip&#39;, {
target: $this,
tooltip: tooltip
});
}
});
},
destroy: function () {
return this.each(function () {
var $this = $(this),
data = $this.data(&#39;tooltip&#39;);
// Namespacing FTW
$(window).unbind(&#39;.tooltip&#39;);
data.tooltip.remove();
$this.removeData(&#39;tooltip&#39;);
})
},
reposition: function () {
// ...
},
show: function () {
// ...
},
hide: function () {
// ...
},
update: function (content) {
// ...
}
};
$.fn.tooltip = function (method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === &#39;object&#39; || !method) {
return methods.init.apply(this, arguments);
} else {
$.error(&#39;Method &#39; + method + &#39; does not exist on jQuery.tooltip&#39;);
}
};
})(jQuery);

將數(shù)據(jù)通過命名空間封裝在一個(gè)對(duì)象中,可以更容易的從一個(gè)集中的位置讀取所有插件的屬性。

十、總結(jié)和最佳做法

編寫jQuery插件允許你做出庫,將最有用的功能集成到可重用的代碼,可以節(jié)省開發(fā)者的時(shí)間,使開發(fā)更高效。 開發(fā)jQuery插件時(shí),要牢記:

1.始終包裹在一個(gè)封閉的插件:

. 代碼如下:

(function($) {
/* plugin goes here */
})(jQuery);

2.不要冗余包裹this關(guān)鍵字在插件的功能范圍內(nèi)

3.除非插件返回特定值,否則總是返回this關(guān)鍵字來維持chainability 。

4.傳遞一個(gè)可拓展的默認(rèn)對(duì)象參數(shù)而不是大量的參數(shù)給插件。

5.不要在一個(gè)插件中多次命名不同方法。

3.始終命名空間的方法,事件和數(shù)據(jù)。

最后加一個(gè)自己寫的放大鏡的插件`

(function($){$.fn.Fdj=function(){
$(&#39;#smallImg&#39;).on(&#39;mouseover&#39;, function() {
$(&#39;#slider&#39;).show();
})
$(&#39;#smallImg&#39;).on(&#39;mouseout&#39;, function() {
$(&#39;#slider&#39;).hide();
})
$(&#39;#smallImg&#39;).on(&#39;mousemove&#39;, function(e) {
var x = e.clientX - $(&#39;#slider&#39;).width() / 2;
var y = e.clientY - $(&#39;#slider&#39;).height() / 2;
if(x <= 0) {
x = 0
}
if(x > $(&#39;#smallImg&#39;).width() - $(&#39;#slider&#39;).width()) {
x = $(&#39;#smallImg&#39;).width() - $(&#39;#slider&#39;).width();
}
if(y <= 0) {
y = 0
}
if(y > $(&#39;#smallImg&#39;).height() - $(&#39;#slider&#39;).height()) {
y = $(&#39;#smallImg&#39;).height() - $(&#39;#slider&#39;).height();
}
$(&#39;#slider&#39;).css({
&#39;left&#39;: x,
&#39;top&#39;: y
})
var X=x/$(&#39;#smallImg&#39;).width()*800
var Y=y/$(&#39;#smallImg&#39;).height()*800
$(&#39;#img&#39;).css({
left:-X,
top:-Y
})
})
}
})(jQuery)

? ?


Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1502
276
Ausführliche Erl?uterung der jQuery-Referenzmethoden: Kurzanleitung Ausführliche Erl?uterung der jQuery-Referenzmethoden: Kurzanleitung Feb 27, 2024 pm 06:45 PM

Detaillierte Erl?uterung der jQuery-Referenzmethode: Kurzanleitung jQuery ist eine beliebte JavaScript-Bibliothek, die h?ufig in der Website-Entwicklung verwendet wird. Sie vereinfacht die JavaScript-Programmierung und bietet Entwicklern umfangreiche Funktionen und Features. In diesem Artikel wird die Referenzmethode von jQuery ausführlich vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern einen schnellen Einstieg zu erleichtern. Einführung in jQuery Zuerst müssen wir die jQuery-Bibliothek in die HTML-Datei einführen. Es kann über einen CDN-Link eingeführt oder heruntergeladen werden

Wie verwende ich die PUT-Anfragemethode in jQuery? Wie verwende ich die PUT-Anfragemethode in jQuery? Feb 28, 2024 pm 03:12 PM

Wie verwende ich die PUT-Anfragemethode in jQuery? In jQuery ?hnelt die Methode zum Senden einer PUT-Anfrage dem Senden anderer Arten von Anfragen, Sie müssen jedoch auf einige Details und Parametereinstellungen achten. PUT-Anfragen werden normalerweise zum Aktualisieren von Ressourcen verwendet, beispielsweise zum Aktualisieren von Daten in einer Datenbank oder zum Aktualisieren von Dateien auf dem Server. Das Folgende ist ein spezifisches Codebeispiel, das die PUT-Anforderungsmethode in jQuery verwendet. Stellen Sie zun?chst sicher, dass Sie die jQuery-Bibliotheksdatei einschlie?en. Anschlie?end k?nnen Sie eine PUT-Anfrage senden über: $.ajax({u

jQuery-Tipps: ?ndern Sie schnell den Text aller a-Tags auf der Seite jQuery-Tipps: ?ndern Sie schnell den Text aller a-Tags auf der Seite Feb 28, 2024 pm 09:06 PM

Titel: jQuery-Tipps: ?ndern Sie schnell den Text aller Tags auf der Seite. In der Webentwicklung müssen wir h?ufig Elemente auf der Seite ?ndern und bedienen. Wenn Sie jQuery verwenden, müssen Sie manchmal den Textinhalt aller a-Tags auf der Seite gleichzeitig ?ndern, was Zeit und Energie sparen kann. Im Folgenden wird erl?utert, wie Sie mit jQuery den Text aller Tags auf der Seite schnell ?ndern k?nnen, und es werden spezifische Codebeispiele angegeben. Zuerst müssen wir die jQuery-Bibliotheksdatei einführen und sicherstellen, dass der folgende Code in die Seite eingefügt wird: &lt

Verwenden Sie jQuery, um den Textinhalt aller a-Tags zu ?ndern Verwenden Sie jQuery, um den Textinhalt aller a-Tags zu ?ndern Feb 28, 2024 pm 05:42 PM

Titel: Verwenden Sie jQuery, um den Textinhalt aller Tags zu ?ndern. jQuery ist eine beliebte JavaScript-Bibliothek, die h?ufig zur Verarbeitung von DOM-Operationen verwendet wird. Bei der Webentwicklung müssen wir h?ufig den Textinhalt des Link-Tags (eines Tags) auf der Seite ?ndern. In diesem Artikel wird erl?utert, wie Sie mit jQuery dieses Ziel erreichen, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir die jQuery-Bibliothek in die Seite einführen. Fügen Sie den folgenden Code in die HTML-Datei ein:

Wie entferne ich das H?henattribut eines Elements mit jQuery? Wie entferne ich das H?henattribut eines Elements mit jQuery? Feb 28, 2024 am 08:39 AM

Wie entferne ich das H?henattribut eines Elements mit jQuery? Bei der Front-End-Entwicklung müssen wir h?ufig die H?henattribute von Elementen manipulieren. Manchmal müssen wir m?glicherweise die H?he eines Elements dynamisch ?ndern, und manchmal müssen wir das H?henattribut eines Elements entfernen. In diesem Artikel wird erl?utert, wie Sie mit jQuery das H?henattribut eines Elements entfernen, und es werden spezifische Codebeispiele bereitgestellt. Bevor wir jQuery zum Betreiben des H?henattributs verwenden, müssen wir zun?chst das H?henattribut in CSS verstehen. Das H?henattribut wird verwendet, um die H?he eines Elements festzulegen

Verstehen Sie die Rolle und Anwendungsszenarien von eq in jQuery Verstehen Sie die Rolle und Anwendungsszenarien von eq in jQuery Feb 28, 2024 pm 01:15 PM

jQuery ist eine beliebte JavaScript-Bibliothek, die h?ufig zur DOM-Manipulation und Ereignisbehandlung in Webseiten verwendet wird. In jQuery wird die Methode eq() verwendet, um Elemente an einer bestimmten Indexposition auszuw?hlen. Die spezifischen Verwendungs- und Anwendungsszenarien sind wie folgt. In jQuery w?hlt die Methode eq() das Element an einer angegebenen Indexposition aus. Indexpositionen beginnen bei 0 zu z?hlen, d. h. der Index des ersten Elements ist 0, der Index des zweiten Elements ist 1 und so weiter. Die Syntax der eq()-Methode lautet wie folgt: $("s

Einführung in das Hinzufügen neuer Zeilen zu einer Tabelle mit jQuery Einführung in das Hinzufügen neuer Zeilen zu einer Tabelle mit jQuery Feb 29, 2024 am 08:12 AM

jQuery ist eine beliebte JavaScript-Bibliothek, die h?ufig in der Webentwicklung verwendet wird. W?hrend der Webentwicklung ist es h?ufig erforderlich, mithilfe von JavaScript dynamisch neue Zeilen zu Tabellen hinzuzufügen. In diesem Artikel wird erl?utert, wie Sie mit jQuery neue Zeilen zu einer Tabelle hinzufügen, und es werden spezifische Codebeispiele bereitgestellt. Zuerst müssen wir die jQuery-Bibliothek in die HTML-Seite einführen. Die jQuery-Bibliothek kann über den folgenden Code in das Tag eingeführt werden:

Wie kann man feststellen, ob ein jQuery-Element ein bestimmtes Attribut hat? Wie kann man feststellen, ob ein jQuery-Element ein bestimmtes Attribut hat? Feb 29, 2024 am 09:03 AM

Wie kann man feststellen, ob ein jQuery-Element ein bestimmtes Attribut hat? Wenn Sie jQuery zum Betreiben von DOM-Elementen verwenden, sto?en Sie h?ufig auf Situationen, in denen Sie feststellen müssen, ob ein Element ein bestimmtes Attribut hat. In diesem Fall k?nnen wir diese Funktion einfach mit Hilfe der von jQuery bereitgestellten Methoden implementieren. Im Folgenden werden zwei h?ufig verwendete Methoden vorgestellt, um festzustellen, ob ein jQuery-Element über bestimmte Attribute verfügt, und um spezifische Codebeispiele anzuh?ngen. Methode 1: Verwenden Sie die Methode attr() und den Operator typeof //, um zu bestimmen, ob das Element ein bestimmtes Attribut hat

See all articles