Javascript 从jquery转换为mootools时出错?

Javascript 从jquery转换为mootools时出错?,javascript,jquery,mootools,Javascript,Jquery,Mootools,我有一些使用jquery的代码: $(document).ready(function(){ $('#tabs div').hide(); $('#tabs div:first').show(); $('#tabs ul li:first').addClass('active'); $('#tabs ul li a').click(function(){ $('#tabs ul li').removeClass('active'); $(this

我有一些使用jquery的代码:

$(document).ready(function(){
   $('#tabs div').hide();
   $('#tabs div:first').show();
   $('#tabs ul li:first').addClass('active');
   $('#tabs ul li a').click(function(){ 
      $('#tabs ul li').removeClass('active');
      $(this).parent().addClass('active'); 
      var currentTab = $(this).attr('href'); 
      $('#tabs div').hide();
      $(currentTab).show();
      return false;
   });
});
我把它改成了mootools

window.addEvent('domready', function() {
    $$('#tabs div').hide();
    $$('#tabs div:first').show();
    $$('#tabs ul li:first').addClass('active');
    $$('#tabs ul li a').addEvent('click', function(event) {
        $$('#tabs ul li').removeClass('active');
        $$(this).parent().addClass('active'); 
        var currentTab = $(this).attr('href'); 
        $$('#tabs div').hide();
        $$(currentTab).show();
        return false;

    });
});
但是我得到一个错误:
$$(this)。父函数不是函数


我如何修理它?

这很糟糕。许多不良做法和api差异

window.addEvent('domready', function() {
    // cache what we will reuse into vars
    var tabs = document.id('tabs'), 
        divs = tabs.getElements('div'),
        // for loop
        len = divs.length,
        ii = 1;

    // hide all but the first one w/o extra lookups.
    for (;ii < len;++ii)
        divs[ii].hide();

    // first match
    tabs.getElement('ul li').addClass('active');

    // attach the events to all links
    tabs.getElements('ul li a').addEvent('click', function(event) {
        event && event.stop();

        tabs.getElement('ul li').removeClass('active');
        this.getParent().addClass('active'); 
        tabs.getElement(this.get('href')).show();
        return false;
    });
});
window.addEvent('domready',function(){
//缓存我们将重用到vars中的内容
var tabs=document.id('tabs'),
divs=tabs.getElements('div'),
//for循环
len=分段长度,
ii=1;
//隐藏除第一个外的所有内容,不进行额外查找。
对于(;ii
基本上,您需要考虑以下几个实践:

  • 缓存选择器,尤其是重复的内容
  • 避免使用dom和内存工作
  • 使用普通的js数组循环或方法来避免额外的选择器,如:first或:last,您已经拥有了数据
  • 直接停止事件,不要返回false
  • .getElement()
    将返回第一个匹配项
  • 避免将内容存储到不可重用的变量中
  • 考虑使用事件委派并将单击处理程序一次附加到ul而不是所有子a上-例如,
    tabs.getElement('ul')。addEvent('click:relay(li a)'fn)
    将实现同样的效果,但只创建一个事件处理程序

    • 在mootools中没有父方法,而是方法名为。从jquery转换为mootools并不困难。查看文档很有帮助