2013-04-15 25 views
-1

jquery函數的第二部分只執行一次 幻燈片js部分$('#slides').slidesjs()工作一次點擊第二次,並沒有等 雖然警報部分和htlm替換是好的。 任何幫助將不勝感激。感謝jQuery函數的一部分只執行一次。幻燈片js只被調用一次

$(document).ready(function(){ 
    $(".linkA").live("click", function(){ 
     $("#slides").html(""); 
     var jQueryfilterType = (jQuery(this).parent().parent().html()); 
     $("#slides").html(jQueryfilterType); 
     $("#slides a").contents().unwrap(); 
     $("#slides li").contents().unwrap(); 

     alert("test"); 

     $('#slides').slidesjs({ 
     width: 940, 
     height: 528, 
     navigation: { 
      effect: "fade" 
     }, 
     pagination: { 
      effect: "fade" 
     }, 
     effect: { 
      fade: { 
       speed: 400 
      } 
     } 
     }); 
    }); 
}); 
+1

你可以添加你的HTML嗎? '#links'嵌套在'.linkA'裏面嗎? – Steve

+0

假設這是指這個插件? http://www.slidesjs.com/ –

+0

你意識到當你做'.unwrap()'它*從DOM *中移除父元素。我敢打賭,你的'#slides> a'有一個父'li',你正在刪除它。留下一個帶有'anchor elements'的'ul'。 – Ohgodwhy

回答

2

關於第一個點擊,你(通過調用html(""))排空#slides元素,並用新的內容重新進行填充。然後你打電話給slidesjs()。所以這工作正常。在第二次點擊後,您再次清空#slides,添加新內容並嘗試再次致電slidejs()。但是,這一次,slidesjs已經初始化該元素一次,因此即使內容已更改,也不會再次執行此操作。

要解決這個問題,您可能需要完全填充remove元素#slides並再次添加一個新的(未初始化的)元素。這樣,slidesjs()將在新元素/內容上正常工作。

+0

你剛剛爲我節省了這麼多時間,並且讓我更加頭痛,因爲我已經解決了這個問題。非常感謝。 –