2011-01-20 51 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上的「切換」不存在。

你可以「落實」了,通過這種方式,例如: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 2011-01-20 15:14:40

+0

@Probocop歡迎您!附:看看更新後的答案,看看'一般'切換擴展;) – stecb 2011-01-20 15:32:54

5

我知道你接受了其他答案,但mootools 1.3現在提供這是一個出色的新功能,我認爲這是一個很好的解決方案。對於初學者來說,下面的代碼

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