2013-02-27 45 views
1

我已經創建了依賴數組,然後將其附加到div。當我點擊ID爲「name」的按鈕時,帶有標題的電影存儲在數組$ titelBetyg中,後者存儲在另一個數組$ films中。每當我創建一個新的$ titelBetyg,我想從我的div中刪除以前的$電影,然後用新的替換它。我該怎麼做呢?使用jquery刪除數組

的Javascript

$(document).ready(function(){ 

var $films = []; 

$('#name').keyup(function(){ 
      $('#name').css('background-color', 'white'); 
}); 

$('#options').change(function(){ 
      $('#options').css('background-color', 'white'); 
}); 

$("#button").click(function(){ 
    var $titelBetyg = []; 

    var $titel = $('#name').val(); 
    var $betyg = $('#options').val(); 

    if($titel == ""){ 
     $('#name').css('background-color', 'red'); 
     alert("Fail"); 
    } 
    else if($betyg == "0"){ 
     $('#options').css('background-color', 'red'); 
     alert("Fail"); 
    } 
    else{ 

     $titelBetyg.push($titel); 
     $titelBetyg.push($betyg); 
     $films.push($titelBetyg); 

     // here is where i need to remove it before appending the new one 

     $('#rightbar').append("<ul>"); 
     for(i=0; i<$films.length; i++){ 
      $('#rightbar').append("<li>" + $films[i][0] + " " + $films[i][1] + "</li>" + "<br>"); 
     } 
     $('#rightbar').append("</ul>"); 
    } 
}); 

$('#stigande').click(function(a,b){ 

}); 
$('#fallande').click(function(){ 

}); 

}); 
+0

爲啥youtag'java'? 'java'!='javascript' – PermGenError 2013-02-27 14:48:55

+1

順便說一句,在JS中沒有必要用'$' – Bergi 2013-02-27 14:50:49

+0

爲所有變量名稱加上前綴我知道,使用jquery時它只是一個習慣 – DrWooolie 2013-02-27 15:12:23

回答

1

使用.empty()像這樣(和附加到<ul>,而不是別的什麼):

var $ul = $("<ul>"); 
for (var i=0; i<$films.length; i++) { 
    $ul.append("<li>" + $films[i][0] + " " + $films[i][1] + "</li><br>"); 
} 
$('#rightbar').empty().append($ul); 

順便說一下,它可能更容易只追加新的代替清空和重建整個事情:

$('#rightbar ul').append("<li>" + $titel + " " + $betyg + "</li><br>"); 

要從#rightbar只刪除列表中的內容(而不是其他),你可以這樣做:

var $ul = $('#rightbar ul').empty(); 
if (!$ul.length) // if nonexistent… 
    $ul = $("<ul>").appendTo('#rightbar'); // create new one 


for (var i=0; i<$films.length; i++) 
    $ul.append("<li>" + $films[i][0] + " " + $films[i][1] + "</li>"); 
+0

該解決方案的問題是它刪除了我的div中的所有內容。我有一個h2「Filmer」,它也被刪除。 – DrWooolie 2013-02-27 15:11:21

+0

這不是你想要的嗎?儘管我會更新我的答案。 – Bergi 2013-02-27 15:12:32

+0

謝謝,它現在完美工作! – DrWooolie 2013-02-27 15:19:07

0
document.getElementById('rightbar').innerHTML = ''; 

這樣rightbar完全是空的。

+0

如果您使用jQuery,則不推薦這樣做。 – Bergi 2013-02-27 14:53:41

+0

它比使用jquery快得多。 當使用jQuery時,你是**沒有**綁定到專門使用jQuery。 – Tschallacka 2013-02-27 15:41:47

+0

是的,但用jQuery清空有刪除自定義數據和清除事件監聽器和co從被刪除​​的部分,以防止內存泄漏的副作用。當然,到處都不是必要的,但仍然是可取的。 – Bergi 2013-02-27 15:44:29

0

您只需要刪除容器的內容。因此,使用.empty()功能

$('#rightbar').empty().append("<ul>"); //It will empty the content and then append 
for(i=0; i<$films.length; i++){ 
    $('#rightbar').append("<li>" + $films[i][0] + " " + $films[i][1] + "</li>" + "<br>"); 
} 
$('#rightbar').append("</ul>"); 
+0

重點是更換陣列。我不想刪除整個內容,因爲我在那裏有一個h2「Filmer」。 – DrWooolie 2013-02-27 15:14:40