2012-12-24 62 views
0

我有以下DIV:追加類的div不工作

<div class="overlay"> 
    <a title="yes" href="#"><div class="yes"></div></a> 
    <a title="no" href="#"><div class="no"></div></a> 
</div> 

<div class="movie item-parent"> 
    <a title="Sin city" class="movie-link"> 
     <img src="images/1.jpg" /> 
    </a> 
    <div class="overlay"> 
     <a title="yes" href="#"><div class="yes"></div></a> 
     <a title="no" href="#"><div class="no"></div></a> 
    </div> 
</div> 

如果用戶點擊「否」,罪惡之城是由另一部電影目前取代了newproducts.jsp這樣的:

<div class="movie item-parent"> 
    <a title="The Hobbit" class="movie-link"> 
     <img src="images/2.jpg" /> 
    </a> 
    <div class="overlay"> 
     <a title="yes" href="#"><div class="yes"></div></a> 
     <a title="no" href="#"><div class="no"></div></a> 
    </div> 
</div> 

我jQuery代碼是:

$('.no').on("click", function(){ 
    var parent_movie= $(this).parent('.movie'); 
    parent_movie.empty(); 
    parent_movie.load("reco_product_stream.jsp a"); 
    parent_movie.append($('.overlay')); 
}); 

但電影的心不是得到更換。

如果我改變.parent.parents,電影被替換罰款,但.overlay從網頁上的所有其他影片移除,犯規回來,儘管.append

+0

我還有一個'格。覆蓋'.movi​​e之外的那個。我只是清空.movi​​e div,所以追加應該仍然有效,不是嗎?它似乎沒有工作。 – soundswaste

回答

1
$('.no').on("click", function(){ 
    var $parent_movie = $(this).closest('.movie'); 
    $.get('reco_product_stream.jsp', function(data) { 
     var $a = $(data).find('a'); 
     $parent_movie.children('a').replaceWith($a); 
    }) 
}); 
+0

它似乎沒有找到'a'標籤。我做了一個alert($ a.attr(「title」));'並且提示** undefined **,即使請求文件中只有一個標籤。 – soundswaste

+0

@soundswaste嘗試使用'console.log(data)'並檢查輸出。如果只有'a'標籤,則使用'replaceWith(data)'。 – undefined

+0

它返回這個:' ' – soundswaste

2

使用closest()而不是parent()作爲父母看起來直接的父母和最接近的查找第一匹配的dom。

var parent_movie= $(this).closest('.movie'); 
+0

試過了。它的stil清除頁面上所有影片的'.overlay'。 '.load'雖然工作正常。 – soundswaste

+0

嘗試使用克隆來保持原始對象,parent_movie.append($('。overlay')。clone); – Adil

0

你的代碼行:如果直接父有一類movie

var parent_movie = $(this).parent('.movie'); 

僅在直接父看起來,只有相匹配。由於在HTML中不是這種情況,所以這會導致一個空的jQuery對象,因此後續的代碼行不起作用。

既然你想,直到你找到一個movie類搜索父級鏈,而不是使用:

var parent_movie = $(this).closest('.movie'); 
+0

試過了。它的stil清除頁面上所有影片的'.overlay'。 '.load'雖然工作正常。 – soundswaste

+0

@soundswaste - 你有多個'.overlay'項目,你的代碼都是針對它們的。你可能只需要定位一個特定的'.overlay'元素,但我不知道你是否想要將其中一個變成一個孩子,或者想添加一個新的克隆,所以我不推薦特定的代碼。你的問題沒有提供這方面的細節。 – jfriend00

0

您可以使用:

var parent_movie = $(this).closest('.movie');