2015-10-06 88 views
2

問題:如何克隆列表中的每個圖像並將它們「粘貼」到另一個列表中?克隆每個,附加到每個

我已經搜索,但沒有找到任何解決方案足夠接近我的解決方案。

簡短說明:我正在創建一個帶縮略圖的幻燈片(jQuery-library:Slippry Slider)。我希望縮略圖能夠動態工作,具體取決於幻燈片的數量。

所以首先我有一個包含一些HTML的幻燈片:

<ul id="thumbnails"> 
<li> 
    <a href="#slide1"> 
     <img src="img/image-1.jpg" alt="This is caption 1"> 
    </a> 
</li> 
<li> 
    <a href="#slide2"> 
     <img src="img/image-2.jpg" alt="This is caption 2"> 
    </a> 
</li> 
<li> 
    <a href="#slide3"> 
     <img src="img/image-4.jpg" alt="And this is some very long caption for slide 4."> 
    </a> 
</li> 

現在我想創建包裹元素爲我的縮略圖,首先div然後ul - 元素:

// Create thumb-wrapping-elements 
$('.demo_wrapper').append('<div class="thumb-box"></div>'); 
$('.thumb-box').append('<ul class="thumbs"></ul>'); 

我想檢查上面的HTML中有多少張幻燈片:

// How many thumbs? Check how many slides there is. 
var count = $("#thumbnails li").length; 

創建鋰元素的正確的數字並設置正確的寬度和值:

// Loop through and create li-elements and links 
for (var thumbcounter = 0; thumbcounter < count; thumbcounter++) { 

// Whats the width of each thumb? 
var thumbwidth = (100/count) + '%'; 

thumburl = thumbcounter + 1; 
$('.thumbs').append('<li><a href="#' + thumburl + '" data-slide="' + thumburl + '" style="width:' + thumbwidth + ';"> 

在這裏,我想通過從UL#縮略圖立一個以上的每張幻燈片IMG環和這裏打印出來。我該怎麼做? :)

</a></li>'); 
}; 

在這裏看到的所有代碼:http://jborg.se/dev/slippry/demo/test.html

現在,「一」是每一個元素裏面,只是爲了讓它們可見。

編輯:拇指更有效,感謝

製造寬度以下回答。

這就是我想通過jQuery的環以上(現在我所擁有的一切權利,除了圖像 - 我不知道如何從HTML和印刷複製在這裏,因爲每個縮略圖)輸出:

<div class="thumb-box"> 
      <ul class="thumbs"> 
       <li> 
        <a href="#1" data-slide="1"> 
         <img src="img/image-1.jpg" alt="This is caption 1"> 
        </a> 
       </li> 
       <li> 
        <a href="#2" data-slide="2"> 
         <img src="img/image-2.jpg" alt="This is caption 2"> 
        </a> 
       </li> 
       <li> 
        <a href="#4" data-slide="3"> 
         <img src="img/image-4.jpg" alt="And this is some very long caption for slide 4."> 
        </a> 
       </li> 
      </ul> 
     </div> 
+0

很難說什麼你怎麼實現。我建議你編輯這個問題,並在*之前包括一個*和*之後的代碼(注意你有幾個元素來演示你的if塊如何影響結果。) –

+0

感謝您的輸入!我編輯了上面的帖子,以顯示我想從我的jQuery循環輸出什麼。 – JoakimB

回答

1

這樣的事情?

$(document).ready(function() { 
 
    var html = '<div class="thumb-box"><ul class="thumbs"></ul></div>'; 
 
    $('.demo').append(html);  
 

 
    var count = $("#thumbnails li").length; 
 
    var width = (100.00/count) + '%'; 
 
    var counter = 0; 
 
    $('#thumbnails li').each(function() { 
 
     counter++; 
 
     var newItem = '<li>'; 
 
     newItem += '<a href= "' + $(this).find('a').attr('href') + '" '; 
 
     newItem += 'data-slide="' + counter + '">'; 
 
     newItem += '<img src="' + $(this).find('img').attr('src') + '" alt="' + $(this).find('img').attr('alt') + '"/>'; 
 
     newItem += '</a></li>'; 
 
      
 
     $('ul.thumbs').append(newItem); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
ORIGINAL<br/> 
 
<ul id="thumbnails"> 
 
    <li> 
 
     <a href="#1" data-slide="1"> 
 
      <img src="img/image-1.jpg" alt="This is caption 1"/> 
 
     </a> 
 
    </li> 
 
    <li> 
 
     <a href="#2" data-slide="2"> 
 
      <img src="img/image-2.jpg" alt="This is caption 2"/> 
 
     </a> 
 
    </li> 
 
    <li> 
 
     <a href="#4" data-slide="3"> 
 
      <img src="img/image-4.jpg" alt="And this is some very long caption for slide 4."/> 
 
     </a> 
 
    </li> 
 
</ul> 
 
<br/> 
 
DEMO 
 
<div class="demo"> 
 
</div>

+0

這很好,但是現在你從縮略圖HTML克隆代碼,而不是幻燈片HTML。一般來說,我的代碼更聰明。 :)但它現在也克隆了類和屬性,滑動腳本正在添加到滑塊元素,這似乎殺死了縮略圖。所以我不想立即克隆li和一個元素。我想創建我自己的li和一個元素,因爲他們可以有其他屬性。 :(沒有javascript錯誤,雖然 – JoakimB

+0

ahh gotcha,對不起,我被「克隆每個和附加」的標題誤導,我會相應地更新我的代碼並回復你 – indubitablee

+0

@JoakimB,通過創建新元素進行更新以前的克隆) – indubitablee

1

嘗試這個 -

// exported and edited the thumbwidth var for efficiency 
var thumbwidth = (100/count) + '%'; 

// Loop through and create li-elements and links 
for (var x = 0; x < count; x++) {  
    var imgEl = $('#thumbnails').find('img').eq(x).prop('outerHTML'); 
    $('.thumbs').append('<li><a href=\"#' + (x+1) + '\" data-slide=\"' + (x+1) + '\" style=\"width:' + thumbwidth + ';\">'+ imgEl + '</a></li>'); 
} 

希望它能幫助。 PS-對不起,沒有任何解釋和混亂,我在iPad上。

+0

感謝您的回答! :)並感謝拇指寬度更聰明的解決方案!似乎你正在做某件事。但你的解決方案並不是真的。我希望將img元素打印在a-tag內。現在,您似乎將img元素src添加到a-tag上的屬性「data-slide」中,並且它變得未定義。 – JoakimB

+0

@JoakimB src attr是否變得未定義?我會在一段時間內更新答案。 。(新iPad :() –

+0

@JoakimB編輯這應該做的伎倆 –