Javascript 根据方向交换上一个()或下一个()

Javascript 根据方向交换上一个()或下一个(),javascript,jquery,Javascript,Jquery,我想根据我的选择使用正确的功能。 示例代码: function move(direction){ if (direction == 'next'){ $(selector).someMethod().next().someMethod(); } if (direction == 'back'){ $(selector).someMethod().prev().someMethod(); } } 这可能吗?当唯一改变的是单一方法时,

我想根据我的选择使用正确的功能。 示例代码:

function move(direction){
    if (direction == 'next'){
        $(selector).someMethod().next().someMethod();
    }
    if (direction == 'back'){
        $(selector).someMethod().prev().someMethod();
    }
}

这可能吗?当唯一改变的是单一方法时,尽量不重复代码。

采取根本不改变的步骤,将它们删除到条件之外,并将条件中需要的内容存储在变量中

function move(direction) {
    var element = $(selector);
    var otherElement;

    if (direction === "next") {
        otherElement = element.next();
    }
    else if(direction === "back") {
        otherElement = element.prev();
    }

    element.someMethod();
    otherElement.someMethod();
}
注意:
选择器
来自哪里?考虑将其作为参数传递到函数中,如果不是常数。< /P>
如果您希望它更具可扩展性,这样您就不仅限于
next
prev
,而且可以使用您喜欢的任何选择器或方法集,那么您可以定义一个带有方向名称的字典和一个返回其他元素的函数:

var elementsInDirection = {
    "next": function(elem) { return elem.next(); },
    "back": function(elem) { return elem.prev(); },
    "up": function(elem) { return elem.parent(); },
    "down": function(elem) { return elem.children(); }
};

function move(direction) {
    var element = $(selector);
    var otherElement = elementsInDirection[direction](element);

    element.someMethod();
    if(otherElement) otherElement.someMethod();
}

现在,您可以使用
move(“up”)
move(“down”)
或您想要定义的任何其他方法。

使用括号表示法-将方法名称作为参数传递给
move
,验证它实际上是允许的方法之一,然后正常进行

function move(direction){
    if (direction.search(/next|prev/) === -1) {
        console.log('invalid direction');
        return;
    }
    $(selector).someMethod()[direction]().someMethod();
}

类似于
var method=direction=='next'?'下一个':'上一个'$(选择器).someMethod()[method]().someMethod()
。只需将步骤分开即可<代码>var foo=$(选择器).someMethod();if(direction==“back”){foo=foo.prev();}else{foo=foo.next();}foo.someMethod()这正是我需要的!工作100%谢谢!!