2011-03-31 40 views
0

在包含7張幻燈片的慈善機構頁面上使用了一個通用圖像滑塊(nivo圖像滑塊),每張幻燈片都是不同的慈善機構。我已經使用了一些jQuery,因此當您在慈善機構詳細信息頁面上時,該特定的慈善機構幻燈片將首先顯示在滑塊隊列中;而不是僅僅從滑塊隊列的開始循環,並顯示一個不相關的慈善機構。基本上着眼於URL和匹配在滑塊鏈接的href和增加了一個類,然後移動到鏈接等的頂部...jQuery - 第n個孩子和滑塊的問題?

例如,這2做工精細...

http://test.clothesaid.co.uk/partner-charities/yorkshire-cancer-centre/

http://test.clothesaid.co.uk/partner-charities/nspcc/

......他們加載他們各自的慈善滑塊。然而...

http://test.clothesaid.co.uk/partner-charities/papworth-hospital-charity/

...這是最早的條目,並在列表的底部將不會加載它的相應的滑塊和只顯示滑塊名單在它的正常秩序爲jQuery有沒有踢入。

慈善機構按照日期順序添加,最新的慈善機構位於清單頂部,而最早的慈善機構位於清單底部。除了任何慈善事業位於列表底部之外,jQuery在所有慈善機構都可以正常工作,但它只是無法啓動。我確信這與Nivo滑塊使用的「克隆」幻燈片有關,可以做些什麼與jQuery中的第n個孩子,但我不能解決它。這是唯一有意義的事情,因爲慈善機構的日期順序是唯一正在改變的事情。您可以在頁面的右側看到一堆慈善徽標,即日期順序,最早的在底部。它總是最老的一個(在列表的底部),這是行不通的。

我基本卡住了!

HTML

<ul id="slider1"> 
<li class="panel cloned"><a href="#">Example</a></li> 
<li class="panel hello"><a href="#">Example</a></li> 
<li class="panel"><a href="#">Example</a></li> 
<li class="panel"><a href="#">Example</a></li> 
<li class="panel"><a href="#">Example</a></li> 
<li class="panel cloned"><a href="#">Example</a></li> 
</ul> 

jQuery的

var url = window.location.toString(); 

$('#slider1 li.panel a').each(function(){ 
    var myHref= $(this).attr('href'); 
    if(url == myHref) { 
     $(this).closest("li").addClass('hello').insertAfter("#slider1 li:nth-child(1)"); 
     return false; 
    } 
}); 

回答

1

發生了什麼事是, 'papworth醫院的慈善機構' 是的liinsertAfter列表中的第一個會嘗試後,將其插入自己哪個不起作用

我建議你在搬運前檢查li的索引(你的目標li移動到第二個位置吧?)

var url = window.location.toString(); 

$('#slider1 li.panel a').each(function(index){ 
    var myHref= $(this).attr('href'); 
    if(url == myHref) { 
     $(this).closest("li").addClass('hello') 
     if(index==0){ 
      $(this).closest("li").insertAfter("#slider1 li:nth-child(2)"); 
     }else{ 
      $(this).closest("li").insertAfter("#slider1 li:nth-child(1)"); 
     } 
     return false; 
    } 
}); 

或使用anythingSlider通過索引顯示幻燈片能力:

var url = window.location.toString(); 

$('#slider1 li.panel a').each(function(index){ 
    var myHref= $(this).attr('href'); 
    if(url == myHref) { 
     $('#slider1').anythingSlider(index); 
     return false; 
    } 
}); 
+0

感謝您的幫助,我意識到現在它會出錯。然而,使用if(i == 0)似乎沒有工作,因爲它從來沒有踢過。我試過這只是爲了測試(i == 0){$(this).closest(「li」)。remove() ;但它不會刪除列表項目。任何想法爲什麼不呢? – Yammi 2011-04-01 07:18:21

+0

我忘了將'i'作爲參數添加到回調中。也許這就是爲什麼它不適合你。我修正了這個問題(我現在把'i'改名爲'index'): '$('#slider1 li.panel a')。每一個(功能(指數){... if(index = 0)...' – manji 2011-04-01 08:49:32

+0

啊,真是太棒了,現在有用了!非常感謝你抽出寶貴時間來解釋。出錯並得到解決方案!謝謝 – Yammi 2011-04-02 08:04:43

-1
$(document).ready(function() { 
    var url = window.location.toString(); 

    $('#slider1 li.panel a').each(function(){ 
    var myHref= $(this).attr('href'); 
    if(url == myHref) { 
     $(this).closest("li").addClass('hello').insertAfter("#slider1 li:nth-child(1)"); 
     return false; 
    } 
    }); 
}; 
+0

你是在開玩笑? – Yammi 2011-03-31 19:44:09

+0

問題中的代碼片段已經嵌入到ready()中... – manji 2011-03-31 19:54:18