2011-01-20 10 views
3

私はmootoolsを使用して、クリック時にテキストを切り替えるという簡単な作業をしようとしています。しかし、私はjQueryのtoggle()関数のMootoolsに相当するものを見つけることはできません。jQueryトグル()のMootoolsに相当しますか?

$('a#id').toggle(
function() { 
    $(this).set('html', 'new text'); 
}, 
function() { 
    $(this).set('html', 'old text'); 
} 
); 

がどのように私はMooToolsのために上記のコードを変更します:次のように

は私がやろうとしているのですか?

ありがとうございます!

答えて

6

私が知る限り、mootoolsの "toggle"は存在しません。

あなたは、例えば、このようで、それを「実装」でした:http://www.jsfiddle.net/steweb/rdvx8/

は、あなたが取得したいのですが何本か?

編集(MooToolsの開発者のため:D)、これは一般的な "トグル" を作成する方法が考えられます。ここ

Element.implement({ 
    toggle: function(fn1,fn2){ 
     this.store('toggled',false); 
     return this.addEvent('click',function(event){ 
      event.stop(); 
      if(this.retrieve('toggled')){ 
       fn1.call(this); 
      }else{ 
       fn2.call(this); 
      } 
      this.store('toggled',!(this.retrieve('toggled'))); 
     }); 
    } 
}); 

//using it in a 'jQuery' mode 

$('mya').toggle(
    function() { 
     this.set('html', 'new text'); 
    }, 
    function() { 
     this.set('html', 'old text'); 
    } 
); 

フィドル:http://www.jsfiddle.net/steweb/qBZ47/

編集2チェックアウト改善版http://jsfiddle.net/dimitar/UZRx5/(ありがとう@Dimitar Christoff

+0

スポットです!まさに私が何をしていたのか、ありがとう。 – Probocop

+0

@Probocopよろしくお願いします! P.S. ) – stecb

+0

優れている、より良い:) – Probocop

5

他の回答は受け入れていますが、mootools 1.3 now provid優れた新機能であるElement Pseudosはここでは良い解決策になると感じています。

http://www.jsfiddle.net/dimitar/VR9k8/4/

(function() { 
    var toggled = 0; 
    Event.definePseudo('toggle', function(split, funcsArray, args){ 
     if (funcsArray.length && funcsArray[toggled]) 
      funcsArray[toggled].apply(this, args); // args[0] is the Event instance 

     toggled++; 
     if (toggled >= funcsArray.length) 
      toggled = 0; 
    }); 
})(); 

document.id("foo").addEvent("click:toggle", [function(e) { 
    e.stop(); 
    alert("function 1"); 
}, function(e) { 
    e.stop(); 
    alert("function 2"); 
}, function(e) { 
    e.stop(); 
    // event object (args[0]) 
    console.dir(e); 
    alert("function 3"); 
}]); 

以下スターター、コードの...デイジーチェーンNNループ・実行するために機能の数連続してだけでなく、元のイベント引数または少なくともパッシングにあなたをできるようになります。

ドキュメント:http://mootools.net/docs/more/Element/Element.Event.Pseudos

要素プロトタイプ・ソリューションの同等または改善されたバージョンが上here

+0

非常に非常に良いDimitar :)私は疑似については考えていませんでした。私はこの特定のケースのための私の解決策が私にできると思った'compatible' .. +1 obv;)..ちょうど好奇心:コア/もっとチームに入っていますか? – stecb

+0

はい、あなたのソリューションはそれらによく知られている構文を提供し、mootools 1.3やmootoolsなどは必要ありません。私はもう少し面白い代替POVとして私だけを提供しました(それはまだ新しいですから!)。ここに潜んでいる唯一の中心的なチームメンバーはArianです、悲しいかな、私は今、IRC、地元の集会、ハカスロンでタグを付けるファンボーイです。 :)バグやサンプルの修正を報告したり、1.3のデモの一部を作ったり(私は未だgithubをやっていない)しています。それは+ブログです。何でも助けてくれる? :) –

+0

絶対にあなたに同意する:)この会話のための感謝! – stecb

関連する問題