Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: jQuery - удалить самый верхний элемент из дерева DOM
 
 автор: Proton   (19.10.2012 в 12:34)   письмо автору
 
 

Здравствуйте.

Имеется блок с id="results":

 <div id="results"></div>


В этот блок с помощью нижеследующей функции добавляются элементы "<h2>Заголовок<h2><p>Некий текст</p>":

 function updateLog() {
 $.getJSON('?ajax=1&lastsize='+lastSize + '&grep='+grep + '&invert='+invert, function(data) {
 lastSize = data.size;
 $.each(data.data, function(key, value) {
 $("#results").append('<h2>Заголовок<h2><p>' + value + '</p>');
 });
 scrollToBottom();
 });
 }


С течением времени элементов в блоке с id="results" становиться очень много, и возникает необходимость самые старые из них (те, что в самом верху станицы) стирать. То есть если элементов "<h2>Заголовок<h2><p>Некий текст</p>" стало 300-та штук, то при добавлении 301-го необходимо самый первый "<h2>Заголовок<h2><p>Некий текст</p>" уничтожить.

Как такое реализовать?

  Ответить  
 
 автор: DJ Paltus   (19.10.2012 в 13:14)   письмо автору
 
   для: Proton   (19.10.2012 в 12:34)
 

ну я тут накидал чего-то, принцип показать. Пока не пришли Конфёрм и ЯСА и не обхохотали, можно пользоваться:

<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; Charset=utf-8">
    <script type=text/javascript src='jquery.js'></script>
    <script type=text/javascript>
    $(document).ready(function(){
        var i=0;
        $("#b1").click(function(){
            i++;
            $("#results").append("<h2>Заголовок</h2><p>Некий текст "+i+"</p>");
            });
        $("#b2").click(function(){
            $("#results h2:first-child").remove();
            $("#results p:first-child").remove();
            });
        })
    </script>
</head>

<body>
    <button id=b1>Ищо</button>
    <button id=b2>Н*х</button>
    <div id=results>
        <h2>Заголовок</h2>
        <p>Некий текст</p>
    </div>

</body>

</html>

  Ответить  
 
 автор: Aidaho   (19.10.2012 в 14:21)   письмо автору
 
   для: DJ Paltus   (19.10.2012 в 13:14)
 

А можно так:

setInterval(function() {
if($('h2').lenght > 300) {
    $("#results h2:first-child").remove();
           $("#results p:first-child").remove(); 
    }
}

, 1000);


будет каждую секунду смотреть и удалять лишнее

  Ответить  
 
 автор: DJ Paltus   (19.10.2012 в 15:22)   письмо автору
 
   для: Aidaho   (19.10.2012 в 14:21)
 

Зачем крутить процесс, если есть четкое событие, когда исполняется условие? Получил новые данные, посчитал количество блоков, и если их 301, то первый кокнул.

  Ответить  
 
 автор: Aidaho   (19.10.2012 в 15:31)   письмо автору
 
   для: DJ Paltus   (19.10.2012 в 15:22)
 

что-то не подумал ) но да, так будет удобней всего ))

  Ответить  
 
 автор: DJ Paltus   (19.10.2012 в 15:59)   письмо автору
 
   для: Aidaho   (19.10.2012 в 14:21)
 

length

  Ответить  
 
 автор: Proton   (20.10.2012 в 09:19)   письмо автору
 
   для: Aidaho   (19.10.2012 в 14:21)
 

Вот так работает как надо:
                                        function updateLog() {
                                                $.getJSON('?ajax=1&lastsize='+lastSize + '&grep='+grep + '&invert='+invert, function(data) {
                                                        lastSize = data.size;
                                                        $.each(data.data, function(key, value) {
                                                                $("#results").append( value );
                                                                if($('h2').length > 3) {
                                                                     $("#results h2:first").remove();
                                                                     $("#results a:first").remove();
                                                                     $("#results p:first").remove();
                                                                  }
                                                        });
                                                                scrollToBottom();
                                                });
                                        }


Спасибо всем, кто откликнулся показал примеры кода и натолкнул на правильные выводы.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования