1

イントロ

こんにちは、

私はjavascriptでプラグインまたは/およびオブジェクトを開発しようとしています。これはいくつかのオブジェクトのいくつかのプロパティを制御します。また、開発を容易にするためにjQueryを使用します。

アイディア

これはあなたにアイデアを与えるための擬似コードです、私はそれを正しい言葉で英語で実際に説明することができないので、私が使いたい(そして学びたい)ものを見つけるためにグーグルを使って行くことは不可能です。

I will have plugin (maybe object?) with some variables and methods:

  plugin hideshow(startupconfig){
    var c, //collection
    add: function(what){
      c += what;
    },
    do: function(){
      c.show().hide().stop(); //example code
    }
  }

そして私はそれをこのように(または一種の)使用します:

  var p = new Plugin();

  p
   .add($('p#simple'))
   .add($('p#simple2'))
   .do();

ノート

私は実際にはjQueryプラグインのチュートリアルを探していません-それはjavascriptのドキュメントで1つのオブジェクトを使用するようなものです、jQueryはdomを変更してセレクターを単純化するために使用されるという理由だけで言及されています、jQueryプラグインはおそらくその1つの小さな関数のためだけですadd

ドキュメントの上に配置され、タイマーやユーザーアクションなどに基づいて、それ自体から関数を呼び出すものを探しています。

問題

  1. このオブジェクト/プラグインの構築をどこから始めればよいのかよくわかりません
  2. jQueryオブジェクトのコレクションである1つの変数を維持する方法がよくわかりません(のようなもの$('#simple, #simple2');
  3. オブジェクトのチェーンを使用するためにjQueryを拡張したいのかもしれません$.fn.addToPluginが、それは単純なはずです(実際にはeach( p.add($(this)); )
  4. 私の最大の問題は、明らかに私が欲しいものを説明できないことです。

何か意味のあること、アイデア、リンク、アドバイスをいただければ幸いです。

編集

それはこのようなものです、私はそれがjavascriptでどのように呼び出され/使用されているのか理解できません-疑似PHPの例:

class Foo() {
  $collection;
  $timer, $action;

  function onTimer(){
    foreach($collection as $e){
      $e->someAction();
    }
  }

  function add($e){
    $collection[] = $e;
  }

  function start(){
    $timer->start( onTimer() );
  }

  function->stop(){
    $timer->stop();
  }
}

var f = new Foo();

Foo.add(something);
Foo.start();
4

2 に答える 2

3

プラグイン/オーサリングを見てください。提案されたAPIは実際には「jQueryの方法」ではありません。可能性が高いのは次のとおりです。

$("#simple, #simple2").hideandshow();

出発点は次のとおりです。

jQuery.fn.hideandshow = function() {
  return this.each(function(){
    $(this).show().hide().stop();
  });
};

基本的には完了です。

この一連のイベントを呼び出すことも実際には意味がありませんが、それは別の問題です。

ここで、メソッドチェーンがもう少し興味深いものになります。これが、「シングルトン」の出番だと思います。jQueryの場合、少なくともjQueryプラグインの場合、状態は原則としてjQueryオブジェクト自体に格納されます。 :

jQuery.effects = [];
jQuery.addeffect = function() {
  for (int i=0; i<arguments.length; i++) {
    if (typeof this[arguments[i]] == "function") {
      this.effects.push(arguments[i]);
    }
  }
};

プラグインからアクセスします。

jQuery.fn.do = function() {
  var effects = this.effects;
  return this.each(function(){
    var ob = $(this);
    for (int i=0; i<effects.length; i++) {
      ob = ob[effects[i]]();
    }
  });
};

これにより、次のことが可能になります。

$.addeffect("hide", "show", "stop");
$("#simple, #simple2").do();

現在、これには、これらのエフェクトに引数を渡すことができるという制限があります。それを回避する方法がよくわかりません。

于 2010-03-08T21:42:14.217 に答える
2

Javascriptでシングルトンを記述しようとしている場合、YAHOOモジュールパターンは必要なものすべてを表示するはずです。

于 2010-03-08T21:52:49.053 に答える