gpt4 book ai didi

javascript - 从 jquery 转换为 mootools 时出错?

转载 作者:行者123 更新时间:2023-12-02 19:37:24 25 4
gpt4 key购买 nike

我有一些使用 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).parent 不是函数

如何修复它?

最佳答案

这真是太糟糕了。许多不好的做法和 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;
});
});

基本上,您需要考虑一些做法:

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

关于javascript - 从 jquery 转换为 mootools 时出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10792804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com