0

jquery 很新,所以这可能是一个“真正的男人”类型的问题。但是假设我有两个要合并为一个的函数,但有细微的差别,例如 next() 和 prev() 方法,并且每个函数中的第一个和最后一个伪选择器都不同:

function rotateImage(){

var currentPhoto = $("#photo_slideshow .current");  
var nextPhoto = currentPhoto.next();

if(nextPhoto.length == 0){
nextPhoto = $("#photo_slideshow div:first");
}

}

function rotateImage2(){

var currentPhoto = $("#photo_slideshow .current");  
var nextPhoto = currentPhoto.prev();

if(nextPhoto.length == 0){
nextPhoto = $("#photo_slideshow div:last");
}
}

必须有一种方法可以结合这两个函数来压缩代码。谢谢您的帮助!

4

3 回答 3

0

您需要在 function.something 中提供一些参数来确定是调用 next 还是调用 previous.do 像这样。

function rotateImage(side){

var currentPhoto = $("#photo_slideshow .current");  
if(side=="next"){
var nextPhoto = currentPhoto.next();
if(nextPhoto.length == 0){
nextPhoto = $("#photo_slideshow div:first");
}
if(side=="prev")
{
var nextPhoto = currentPhoto.prev();
if(nextPhoto.length == 0){
nextPhoto = $("#photo_slideshow div:last");
}
}

调用时:供下次使用rotateImage("next")以供先前使用rotateImage("prev")

于 2013-01-31T08:54:06.577 回答
0
function rotateImage(which, pseudoSelector) {

    var currentPhoto = $("#photo_slideshow .current");  
    var nextPhoto = currentPhoto[which]();

    if(nextPhoto.length == 0){
        nextPhoto = $("#photo_slideshow div:" + pseudoSelector);
    }

}


rotateImage('next', 'first');
rotateImage('prev', 'last');
于 2013-01-31T08:58:14.650 回答
0
function rotateImage(side){
var isNext = side == 'next';

var currentPhoto = $("#photo_slideshow .current");  
var nextPhoto = isNext ? currentPhoto.next() : currentPhoto.prev();

if(nextPhoto.length == 0){
nextPhoto = $("#photo_slideshow " + (isNext ? "div:first" : "div:last"));
}}
  • 使用 rotateImage('next')旋转下一个。
  • 使用 rotatImage() 或 rotateImage('prev') 或 rotateImage()旋转到上一个。
于 2013-01-31T09:16:06.207 回答