2013-02-27 3 views
1

Я создал nestled массивы, которые я затем добавляю в div. Когда я нажимаю кнопку с именем «имя», фильм с заголовком сохраняется в массиве $ 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

+1

Btw, нет необходимости в JS для префикса всех имен переменных с '$' – Bergi

+0

, я знаю, это просто привычка при использовании jquery – DrWooolie

ответ

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); 

BTW, это может быть легче только добавить новый один вместо опорожнение и восстановление вся вещь:

$('#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

+0

Разве это не то, что вы хотели? Однако я обновлю ответ. – Bergi

+0

спасибо, он отлично работает сейчас! – DrWooolie

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

Таким образом rightbar совершенно пуст.

+0

Это не рекомендуется, если вы используете jQuery. – Bergi

+0

Это намного быстрее, чем использование jquery. При использовании jquery вы ** не ** связаны исключительно с использованием jquery. – Tschallacka

+0

Да, но опорожнение с помощью jQuery имеет побочный эффект удаления пользовательских данных и прослушивания прослушивателей событий и co из удаленных частей, чтобы предотвратить утечку памяти. Хотя, конечно, не обязательно везде, это все же целесообразно. – Bergi

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

Смежные вопросы