2012-04-22 85 views
0

我有div的列表,我想實現的是刪除子<div class="lol">999</div>,並將其替換爲<div class="lol">111</div>刪除子div

我知道如何獲得他們兩個的數據平方。我嘗試使用$(this).removeClass('column div');,但它效果不佳。

訪問http://jsfiddle.net/jm4eb/5/ 前:

<div class="column" data-square="1-4"> 
<div class="green">999</div> 
</div> 


<div class="column" data-square="1-5"> 
<div class="blue">111</div> 
</div> 

<div class="column" data-square="1-4"> 

</div> 


<div class="column" data-square="1-5"> 
<div class="green">999</div> 
</div> 

喜,這是怎樣的應用程序的工作。假設有10個div盒,每個盒有一個內盒12,用戶點擊一個div並點擊另一個div。所以點擊的第二個div的內部div應該被刪除,並替換爲第一個div點擊div的內部。但外部divs只有他們擁有的唯一字段是數據平方。訪問http://jsfiddle.net/jm4eb/11/,所以當第一個div的內部div將去,而不是第二個div的內部div被點擊。第二個div的內部div在替換之前被刪除

+0

爲什麼在這種情況下,'removeClass'會有幫助?如果你知道如何使用'data-square'屬性獲得元素,那麼就沒有什麼可做的了。移除其中一個子元素的第一個子元素,並追加另一個元素的第一個子元素。 – 2012-04-22 17:13:13

+1

這個樂高™遊戲的目的是什麼? – 2012-04-22 17:15:21

+1

如果您試圖用另一個元素替換元素,爲什麼不嘗試調用jQuery方法...等待它... [replaceWith()](http://api.jquery.com/replaceWith/) – adeneo 2012-04-22 17:18:26

回答

2

那麼如何改變文本值而不是刪除然後創建一個新的一?

$('.column').each(function() { 

    // Save $(this) and $(this).next() since we're going to use them multiple times 
    var self = $(this), 
     next = self.next() 

    // For each of them, save the firstChild's text 
    var val = self.children().first().text() 

    // Now, check if the next DIV exists 
    if (next) { 

     // If it does, change the text of its first child with the "val" variable 
     next.children().first().text(val) 
    } 
}) 

編輯:用.children().first()取代.find('>:first-child')。不能相信jQuery沒有墊片的方法firstElementChild

@Esailija也認爲這種方法失蹤很奇怪。所以他創建了一個jQuery plugin。這意味着我可以使用self.firstChild().text()而不是self.children().first().text()

+0

可能downvoters評論? :) – 2012-04-22 17:30:00

+0

我沒有downvote,但爲什麼不保存'$(this)'對象,而不是創建它們三個。 – Andreas 2012-04-22 17:42:30

+0

@john_doe顯然會太高效。 – sg3s 2012-04-22 17:46:08

0

如果我理解正確,你想放置div用戶的內容,首先點擊他們點擊的第二個div。由於您已經選擇了dv(通過它們的點擊)並且您有它的數據平方,所以這只是複製html的問題。例如:http://jsfiddle.net/jm4eb/6/如果要清空第一個div的內容,只需在第一次單擊時添加.html(""),或者將引用保存爲單擊的div,並在他們再次單擊時在保存的引用上運行.html("")

我在你的問題中錯過了什麼嗎?