2012-03-14 31 views
1

我在修改THIS滑塊時卡住了一些位置。實現複雜的jQuery圖像滑塊時卡住了

這裏縮圖&主顯示圖像具有通過點擊縮略圖1一對一的關係即,它示出了單個圖像&然後將其滑動以&等顯示其相關聯的圖像&下一縮略圖。

現在,我想在這樣一種方式,一個縮略圖應該assiciated修改此滑塊/多張圖片鏈接即一個縮略圖,許多主要的顯示圖像的關係(一對多)

點擊即上「臥室縮圖」(如附圖所示.. SCREENSHOT),它應該只顯示&幻燈片5(或n)數量的圖像與此特定縮略圖相關,然後以同樣的方式,如果我點擊「浴室它應該顯示幻燈片5(或n)與這個特定部分相關的圖像數量&等。所以這就是我想要如何將代碼從一對一[一個縮略圖到一個主顯示圖像]修改爲一對多[一個縮略圖 - 到與該特定縮略圖相關的5或n個圖像]

我的修改縮略圖部分的HTML代碼是相同的。

我已經修改了主圖像部分如圖..

<div id="lofslidecontent45" class="lof-slidecontent" style="width:670px;height:236px;"> 
<div class="preload"><div></div></div> 
<div class="lof-main-outer" style="width:670px; height:236px;"> 
<ul class="lof-main-wapper"> 
    <li> 
     <ul class=」lof-main-subwapper」> 
        <li> 
<img src="images/slider1.jpg" title="Newsflash 2" >   
         <div class="lof-main-item-desc"> 
         <h3>Innovation</h3> 
<h2>lorem ipsum is simply dummy text</h2> 
         </div> 
        </li> 
        <li> 
         .. 
        </li> 
     </ul> 
    </li> 
    <li> 
     <ul class=」lof-main-subwapper」> 
      <li> 
       … 
      </li> 
      <li> 
       … 
      </li> 
     </ul> 
    </li> 
</ul> 
</div> 
</div> 

我修改滑塊的腳本代碼,到目前爲止我有加法器另一wrappersub類&而圖像組鏈接到一個我停留縮略圖即鏈接主圖像部分的ul與縮略圖的裏...

(function($) { 
$.fn.lofJSidernews = function(settings) { 
    return this.each(function() { 
     // get instance of the lofSiderNew. 
     new $.lofSidernews(this, settings); 
    }); 
} 


$.lofSidernews = function(obj, settings){ 
    this.settings = { 
     direction   : '', 
     mainItemSelector  : 'li', 
        mainInnerItemSelector : 'li', 
     navInnerSelector : 'ul', 
     navSelector   : 'li' , 
     navigatorEvent  : 'click', 
        subWrapperSelector  :'.lof-main-subwrapper', 
     wapperSelector:  '.lof-main-wapper', 
     interval  : 4000, 
        innerinterval   :20000, 
     auto    : true, // whether to automatic play the slideshow 
maxItemDisplay  : 5, 
     startItem   : 0, 
     navPosition   : 'vertical', 
     navigatorHeight  : 100, 
     navigatorWidth  : 310, 
     duration   : 600, 
navItemsSelector : '.lof-navigator li', 
     navOuterSelector : '.lof-navigator-outer' , 
     isPreloaded   : true, 
     easing    : 'easeInOutQuad' 
    } 

$.extend(this.settings, settings ||{}); 
    this.nextNo   = null; 
    this.previousNo  = null; 
    this.maxWidth = this.settings.mainWidth || 600; 
    this.wrapper = $(obj).find(this.settings.wapperSelector); 
      this.subSlides = this.wrapper.find(this.settings.mainItemSelector); 
      this.subwrapper = this.subslides.find(this.settings.subWrapperSelector) 
      this.slides = this.subwrapper.find(this.settings.mainInnerItemSelector) 

if(!this.wrapper.length || !this.subslides.length) return ; 
if(!this.subwrapper.length || !this.slides.length) return ; 
if(this.settings.maxItemDisplay > this.slides.length){ 
     this.settings.maxItemDisplay = this.slides.length; 
} 
    this.currentNo  = isNaN(this.settings.startItem) 
)||this.settings.startItem > this.slides.length?0:this.settings.startItem; 
this.navigatorOuter = $(obj).find(this.settings.navOuterSelector); 
    this.navigatorItems = $(obj).find(this.settings.navItemsSelector); 
this.navigatorInner = this.navigatorOuter.find(this.settings.navInnerSelector); 
if(this.settings.navPosition == 'horizontal'){ 
     this.navigatorInner.width(this.slides.length * this.settings.navigatorWidth); 
     this.navigatorOuter.width(this.settings.maxItemDisplay * this.settings.navigatorWidth); 
     this.navigatorOuter.height(this.settings.navigatorHeight); 
} else { 
     this.navigatorInner.height(this.slides.length * this.settings.navigatorHeight);  

     this.navigatorOuter.height(this.settings.maxItemDisplay * this.settings.navigatorHeight); 
     this.navigatorOuter.width( this.settings.navigatorWidth); 
    }  

this.navigratorStep = this.__getPositionMode(this.settings.navPosition);  
    this.directionMode = this.__getDirectionMode(); 
if(this.settings.direction == 'opacity') { 
this.subwrapper.addClass('lof-opacity'); 
$(this.slides).css('opacity',0).eq(this.currentNo).css('opacity',1); 
} else { 
     this.subwrapper.css 
({'left':'-'+this.currentNo*this.maxSize+'px', 'width':(this.maxWidth) * this.slides.length }); 
    } 
    if(this.settings.isPreloaded) { 
     this.preLoadImage(this.onComplete); 
    } else { 
     this.onComplete(); 
    } 

} 


    $.lofSidernews.fn = $.lofSidernews.prototype; 
$.lofSidernews.fn.extend = $.lofSidernews.extend = $.extend; 

$.lofSidernews.fn.extend({ 


    startUp:function(obj, subwrapper) { 
     seft = this; 

     this.navigatorItems.each(function(index, item){ 
      $(item).click(function(){ 
       seft.jumping(index, true); 
       seft.setNavActive(index, item);     
      }); 
      $(item).css({'height': seft.settings.navigatorHeight, 'width': seft.settings.navigatorWidth}); 
     }) 
     this.registerWheelHandler(this.navigatorOuter, this); 
     this.setNavActive(this.currentNo); 

     if(this.settings.buttons && typeof (this.settings.buttons) == "object"){ 
      this.registerButtonsControl('click', this.settings.buttons, this); 

     } 
     if(this.settings.auto) 
     this.play(this.settings.innerinterval,'next', true); 

     return this; 
    }, 
onComplete:function(){ 
     setTimeout(function(){ $('.preload').fadeOut(900); }, 400); this.startUp(); 
    }, 
preLoadImage:function( callback){ 
     var self = this; 
     var images = this.subwrapper.find('img'); 
var count = 0; 
     images.each(function(index,image){ 
      if(!image.complete){     
       image.onload =function(){ 
        count++; 
        if(count >= images.length){ 
         self.onComplete(); 
        } 
       } 
       image.onerror =function(){ 
        count++; 
        if(count >= images.length){ 
         self.onComplete(); 
        } 
       } 
      }else { 
       count++; 
       if(count >= images.length){ 
        self.onComplete(); 
       } 
      } 
     }); 
    }, 
    navivationAnimate:function(currentIndex) { 

     if (currentIndex <= this.settings.startItem 
      || currentIndex - this.settings.startItem >= this.settings.maxItemDisplay-1) { 
       this.settings.startItem = currentIndex - this.settings.maxItemDisplay+2; 
       if (this.settings.startItem < 0) this.settings.startItem = 0; 
       if (this.settings.startItem >this.slides.length-this.settings.maxItemDisplay) { 
        this.settings.startItem = this.slides.length-this.settings.maxItemDisplay; 
       } 
     }  

任何幫助,將不勝感激。

謝謝

回答

0

也許你可以嘗試添加幻燈片放映另一個滑塊,將支持更多像Anything Slider內容的內部。我已經在項目中使用過它,並且在幻燈片中添加自己的自定義內容時有一些運氣。嘗試在第238行添加「var」,它會變成:var seft = this;

+0

謝謝你的想法男人......但有任何鏈接/例如滑塊幻燈片放映? – Xzzst 2012-03-14 13:34:16