8. function debug($obj) {
9. if (window.console && window.console.log) . window.log('ハイライト選択数: ' $obj.size());
12.// ...
作成しているプラグインに基づいて、メタデータ プラグインのサポートを追加すると、プラグインがより強力になります。個人的には、このメタデータ プラグインが気に入っています。なぜなら、いくつかの「マークアップ」オプションを使用してプラグインをオーバーライドできるからです (サンプルを作成するときに非常に便利です)。そしてそれをサポートするのは非常に簡単です。更新: コメントに少し最適化の提案がありました。
これらの行は何かを行う: メタデータ プラグインがインストールされているかどうかをテストします。インストールされている場合は、メタデータ行を抽出し、それを最後のパラメーターとして JQuery.extend に追加することで、オプション オブジェクトを拡張できます。これにより、他のオプション設定がオーバーライドされます。 「マークアップ」を選択すると、「マークアップ」から動作を制御できます。
1. 2 .
4.
< ;div class="hilight { foreground: 'orange' }"> 6. 良い一日をお過ごしください。
8.
9. 良い一日をお過ごしください!
10.
11. これで、1 行だけを使用してどの div を強調表示できるようになりました。スクリプトの:
12.$('.hilight').hilight();
2.7 統合
4. $.fn.hilight = function(options) {
5. debug(this);要素の反復前のオプション
7. var opts = $.extend({}, $.fn.hilight.defaults, options);
8. // 一致した各要素を反復して再フォーマットします
9. .each(function () {
10. $this = $(this);
11. // 要素固有のオプションを構築
12. var o = $.meta ? $.extend({}, opts, $this .data()) : opts;
13. // 要素のスタイルを更新します
14. $this.css({
15.backgroundColor: o.background,
16.color : o.foreground
17. });
18. var markup = $this.html(); // フォーマット関数
20. .format(markup );
22.
24. デバッグfunction debug($ obj) {
26. if (window.console && window.console.log)
27. window.console.log('ハイライト選択数: ' $obj.size()); 🎜>28. };
29. // 公開フォーマット関数を定義します
30. $.fn.hilight.format = function(txt) {
31. ;
32. }; // プラグインのデフォルトは
34.
36. 背景 : '黄色'
37. };
39.})(jQuery);
この設計により、仕様に準拠した強力なプラグインを作成することができました。それがあなたにも同じようにできることを願っています。
3. 概要
jQuery は、プラグインを開発するための 2 つのメソッドを提供します。
jQuery.fn.extend(object); jQuery オブジェクトにメソッドを追加します。
jQuery.extend(object); jQuery クラス自体を拡張します。クラスに新しいメソッドを追加します。
3.1 jQuery.fn.extend(object);
fn とは。 jQuery コードを見ると、見つけるのは難しくありません。
jQuery.fn = jQuery.prototype = {
init: function( selector, context ) {//....
//....
}; jQuery.fn = jQuery.prototype。プロトタイプについてはよくご存知でしょう。 JavaScript には明確なクラスの概念がありませんが、それを理解するにはクラスを使用する方が便利です。 jQuery は非常によくカプセル化されたクラスです。たとえば、ステートメント $("#btn1") を使用すると、jQuery クラスのインスタンスが生成されます。
jQuery.fn.extend(object); jQuery.prototype を拡張するとは、jQuery クラスに「メンバー関数」を追加することです。 jQueryクラスのインスタンスはこの「メンバー関数」を利用することができます。
たとえば、特別な編集ボックスを作成するプラグインを開発したいと考えています。これがクリックされると、現在の編集ボックスの内容が警告されます。これを行うことができます:
$.fn。 extend({
alertwhileClick:function(){
$(this).click(function(){
alert($(this).val());
});
}
});
$("#input1").alertwhileClick(); // ページ上:
$("#input1") は jQuery インスタンスです。メンバーメソッドを呼び出します。alertwhileClick の後、拡張機能が実装され、クリックされるたびに、最初に現在の編集内容がポップアップ表示されます。
3.2 jQuery.extend(object);
jQuery クラスにクラス メソッドを追加します。これは静的メソッドを追加するものとして理解できます。例:
1.$.extend( {
2.add:function(a,b){return a b;}
3.});
は、jQuery の add と呼ばれる「静的メソッド」を追加します。 jQuery の場合は、このメソッドを使用します。 $.add(3,4); //return 7