2012-05-29 67 views
0

我有一個使用jQuery的一些代碼:從jquery轉換到mootools時出錯?

$(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).parent is not a function

如何解決呢?

回答

2

這是相當差。許多不好的做法和差異。

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; 
    }); 
}); 

基本上,你需要考慮幾個做法:

  • 緩存您的選擇,尤其重複的東西
  • 避免到DOM和工作從內存
  • 使用正常JS數組循環或方法避免一個額外的選擇器,如:第一個或:最後一個,你已經有數據
  • 直接停止事件,不返回假
  • .getElement()將返回第一個匹配
  • 避免存放的東西到變量,你不會重用
  • 考慮使用事件代表團和一次附一個單擊處理程序到UL,而不是所有孩子的 - 例如,tabs.getElement('ul').addEvent('click:relay(li a)', fn)將實現相同的,但只創建一個單一的事件處理程序
0

存在的mootools沒有parent方法,相反,方法名是getParent。它並不困難可以從jQuery轉換到mootools的。看看文檔是有幫助的。