문제

소개

안녕하십니까,

플러그인을 개발하려고합니다 또는/그리고 JavaScript의 객체는 일부 객체의 일부 속성을 제어합니다. 또한 개발을 완화하기 위해 jQuery를 사용합니다.

아이디어

이것은 당신에게 아이디어를주기 위해 의사 코드에 있습니다. 캔트 실제로 올바른 단어로 영어로 설명하십시오. Google을 사용하여 내가 사용하고 싶은 것을 찾아서 배우는 것은 불가능합니다.

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의 문서에서 하나의 객체를 사용하는 것과 비슷합니다. jQuery는 DOM을 수정하고 Selectors를 단순화하는 데 사용되기 때문에 언급됩니다. add.

나는 무언가를 찾고 있습니다. 내 문서 위에 앉아 타이머, 사용자 조치 등을 기반으로 그 자체로부터 호출 기능을 할 것입니다.

문제

  1. 나는 어디서부터 시작 해야할지 정말로 모른다 건설 이 개체/플러그인의
  2. jQuery 객체의 모음 인 하나의 변수를 유지하는 방법을 잘 모르겠습니다 ( $('#simple, #simple2');)
  3. 나는 아마도 jQuery와 함께 Extedn jQuery를 원할 것입니다 $.fn.addToPlugin 물체의 사슬을 사용하려면 간단해야합니다 (실제로는 each( p.add($(this)); ))
  4. 나의 가장 큰 문제는 분명히 내가 원하는 것을 설명 할 수 없다는 것입니다.

나는 내가 이해하기를 바랍니다. 아이디어, 링크 또는 조언에 감사드립니다.

편집하다

이와 같은 것입니다. JavaScript에서 어떻게 호출/사용되는지 알 수 없습니다 - Pseudo 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();
도움이 되었습니까?

해결책

JavaScript로 싱글 톤을 쓰려고한다면 야후 모듈 패턴 필요한 모든 것을 보여 주어야합니다.

다른 팁

보세요 플러그인/제작. 귀하의 제안 된 API는 실제로 "jQuery way"가 아니라고 말할 것입니다. 더 가능성이 높습니다.

$("#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();

이제 이것은 그러한 효과에 대한 인수를 전달할 수 있다는 제한이 있습니다. 그 점을 어떻게 해결 해야할지 잘 모르겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top