Javascript 从jquery转换为mootools时出错?
我有一些使用jquery的代码: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
$(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并不困难。查看文档很有帮助