2011-04-04 95 views
0

我对我的网站的滑块有问题,虽然滑块工作正常,但我需要它是随机或洗牌,而不是显示有序的内容。 我已经有代码,它需要一些修改。洗牌滑块显示

这是主file.php行

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#slider1').s3Slider({ 

     timeOut: 8000 

    }); 
}); 

<div id="slider1"> 
    <ul id="slider1Content"> 
     <li class="slider1Image"> 
      <a href="goo.com"><img src="products/1.png" alt="1" /></a> 
      <span class="left"> 
      caption1 
      </span> 
     </li> 

     <li class="slider1Image"> 
      <a href=""><img src="products/2.png" alt="2" /></a> 
      <span class="right">caption2 
      </span> 
     </li> 

     <li class="slider1Image"> 
      <a href=""><img src="products/3.png" alt="3" /></a> 
      <span class="right">caption3. 
      </span> 
     </li></div> 

这是Java脚本文件

(function($){ 

$.fn.s3Slider = function(vars) {  



    var element  = this; 
    var timeOut  = (vars.timeOut != undefined) ? vars.timeOut : 4000; 
    var current  = null; 
    var timeOutFn = null; 
    var faderStat = true; 
    var mOver  = false; 
    var items  = $("#" + element[0].id + "Content ." + element[0].id + "Image"); 
    var itemsSpan = $("#" + element[0].id + "Content ." + element[0].id + "Image span"); 

    items.each(function(i) { 

     $(items[i]).mouseover(function() { 
      mOver = true; 
     }); 

     $(items[i]).mouseout(function() { 
      mOver = false; 
      fadeElement(true); 

     }); 

    }); 

    var fadeElement = function(isMouseOut) { 
     var thisTimeOut = (isMouseOut) ? (timeOut/2) : timeOut; 
     thisTimeOut = (faderStat) ? 10 : thisTimeOut; 
     if(items.length > 0) { 
      timeOutFn = setTimeout(makeSlider, thisTimeOut); 
     } else { 
      console.log("Poof.."); 
     } 
    } 

    var makeSlider = function() { 

     current = (current != null) ? current : items[(items.length-1)]; 
     var currNo  = jQuery.inArray(current, items) + 1 
     currNo = (currNo == items.length) ? 0 : (currNo - 1); 
     var newMargin = $(element).width() * currNo; 
     if(faderStat == true) 

     { 
      if(!mOver) { 
       $(items[currNo]).fadeIn((timeOut/6), function() { 
        if($(itemsSpan[currNo]).css('bottom') == 0) { 
         $(itemsSpan[currNo]).slideUp((timeOut/6), function() { 
          faderStat = false; 
          current = items[currNo]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        } else { 
         $(itemsSpan[currNo]).slideDown((timeOut/6), function() { 
          faderStat = false; 
          current = items[currNo]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        } 
       }); 
      } 
     } else { 
      if(!mOver) { 
       if($(itemsSpan[currNo]).css('bottom') == 0) { 
        $(itemsSpan[currNo]).slideDown((timeOut/6), function() { 
         $(items[currNo]).fadeOut((timeOut/6), function() { 
          faderStat = true; 
          current = items[(currNo+1)]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        }); 
       } else { 
        $(itemsSpan[currNo]).slideUp((timeOut/6), function() { 
        $(items[currNo]).fadeOut((timeOut/6), function() { 
          faderStat = true; 
          current = items[(currNo+1)]; 
          if(!mOver) { 
           fadeElement(false); 
          } 
         }); 
        }); 
       } 
      } 
     } 
    } 

    makeSlider(); 

};})(jQuery);  

我奋力修改此脚本几乎周...请帮忙

+0

我不认为你可以没有认真的重写,它是遍历元素(按顺序)。 – 2011-04-04 04:04:55

+0

..哦,所以它需要重新从头开始? – 2011-04-04 13:54:59

回答

0

不知道你是否仍然在寻找解决方案......我刚刚这样做,但认为这将是一个更好的方法,通过从随机数组中调用它们将li标签写入服务器端。这就是如果你使用服务器端脚本 - 下面是我在php中所做的。

$ ARR =阵列( “ 某些文本”, “ 某些文本”, “ 某些文本”,);

 $arrCnt = count($arr); 
 for ($i=0; $i<=$arrCnt; $i++) 
     { 

      $random = array_rand($arr); 

      echo "<li class='sliderImage'>"; 
      echo $arr[$random]; 
      echo "</li>\n"; 

      if($i<$arrCnt-1) 
       unset($arr[$random]); 
     } 
    ?> 

希望有所帮助。