修复干代码帮助javascript?

修复干代码帮助javascript?,javascript,jquery,Javascript,Jquery,我正在制作一个基本的jquery滑块,但我注意到我基本上重复了两次。唯一的区别是var prev和prev方法。从第一种方法到最后一种方法 left.on('click', function(){ var current = $('.active'); var prev = current.prev(); if (prev.length === 0){ prev = $(".slides").last(); } current.fadeOut(300).re

我正在制作一个基本的jquery滑块,但我注意到我基本上重复了两次。唯一的区别是var prev和prev方法。从第一种方法到最后一种方法

 left.on('click', function(){
  var current = $('.active');
  var prev = current.prev();
   if (prev.length === 0){
    prev = $(".slides").last();
   }

   current.fadeOut(300).removeClass("active");
    prev.fadeIn(300).addClass("active");
 });

right.on('click', function(){
 var current = $('.active');
 var next = current.next();
 if (next.length === 0){
   next = $(".slides").first();
 }
 current.fadeOut(300).removeClass("active");
 next.fadeIn(300).addClass('active');
}); 
我已经尝试过这个功能,但它不起作用。我是个初学者,所以我不知道这种函数是否可行

function slider(x, y){
 var current = $('.active');
 var x = current.x();
 if (x.length === 0){
   x = $(".slides").y();
 }
 current.fadeOut(300).removeClass("active");
 x.fadeIn(300).addClass('active');
}); 
right.on('click', slider("next", "first"));
left.on('click', slider("prev", "last"));
右侧。在('click',滑块(“next”,“first”))

right.on('click', function(){
  slider("next", "first");
});

看看这是否有效

您正在尝试访问函数中的一些动态值。进行此操作时,必须使用括号表示法
[]
。也就是说,
current.x
$(“.slides”).y()
将不起作用。你能做的就是用括号来访问它们,比如
current[x]
$(“.slides”)[y](

此外,您的事件处理在单击时是错误的。您正在注册一个函数调用,这将产生一个错误。您可以为调用创建闭包,也可以预绑定函数

关闭

right.on('click', () => slider("next", "first"));
left.on('click', () => slider("prev", "last"));
装订

right.on('click', slider.bind(null, "next", "first"));
left.on('click', slider.bind(null, "prev", "last"));

或者:
函数滑块(x,y){return function(){…}}
感谢您的帮助!这基本上是我的另一个问题,即如何动态更改.prev和.next等方法。我结合了括号符号和Hans事件处理程序。但是为什么用括号加上“点”?@Zach4531访问对象属性有两种方法。点符号访问右边值的名称。执行current.x它将在对象
current
上查找名为
x
的属性。使用方括号表示法,它将对传递的变量求值,从而将其转换为字符串,然后使用该名称访问属性。感谢您的回答。我的代码现在更容易阅读。删除了许多行代码。
right.on('click', slider.bind(null, "next", "first"));
left.on('click', slider.bind(null, "prev", "last"));