Mootools эквивалент JQuery toggle ()? - PullRequest
3 голосов
/ 20 января 2011

Я использую попытку использовать mootools для быстрой задачи переключения текста при нажатии. Но я не могу найти Mootools эквивалент функции jQuery toggle ().

Я пытаюсь сделать следующее:

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

Как бы я изменил приведенный выше код для mootools?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 20 января 2011

Насколько я знаю, "переключения" в 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 )

5 голосов
/ 20 января 2011

я знаю, что вы приняли другой ответ, но mootools 1.3 теперь предоставляет отличную новую функцию, 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");
}]);

... позволит вам последовательно соединять число функций для последовательного выполнения цикла, а также передавать аргументы или хотя быисходное событие.

документы: http://mootools.net/docs/more/Element/Element.Event.Pseudos

эквивалентная или улучшенная версия решения-прототипа элемента здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...