За последние 24 часа нас посетили 16557 программистов и 1578 роботов. Сейчас ищут 1023 программиста ...

Не срабатывает hide() в цикле

Тема в разделе "JavaScript и AJAX", создана пользователем vitasonline, 22 янв 2011.

  1. vitasonline

    vitasonline Активный пользователь

    С нами с:
    22 янв 2011
    Сообщения:
    6
    Симпатии:
    0
    Привет всем!
    Подскажите, кто знает, почему не срабатывает $("#message"+e.value).hide('fast'); $("#sent"+e.value).hide(); в цикле:
    Код (Text):
    1. e = document.forms["chech_all"].elements["checks[]"];
    2.                 c = e.length;
    3.                 for (i = 0; i < c; i++){
    4.                 if (e[i].checked){
    5.                 //alert("ваш выбор: " + e[i].value);
    6.                
    7.                 $.ajax({ url: '$http_path/members/groupprofile.php?messages=1&popup=1&delete=1&id='+e[i].value,
    8.                 success: function(data) {
    9.                  
    10.                   $("#message"+e[i].value).hide('fast');
    11.                   $("#sent"+e[i].value).hide();
    12.                 },
    13.                 error: function(data) {
    14.                   $("#delete_processing").hide('fast');
    15.                   $("#error").show();
    16.                 }
    17.                     });
    18.                 };
    19.                 };
    20.                 $("#delete_processing").hide('slow');
    Если ставлю sleep(1) в цикле срабатывает, но все зависает.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Это отвратительно. Смесь старого JS и либы jquery.

    e.value точно имеет значение?
    Попробуйте задать всем формам, которые нужно скрыть, один css-класс. И по нему уже прячьте формы с помощью jquery
     
  3. vitasonline

    vitasonline Активный пользователь

    С нами с:
    22 янв 2011
    Сообщения:
    6
    Симпатии:
    0
    e.value точно имеет значение, т.к. из базы url: '$http_path/members/groupprofile.php?messages=1&popup=1&delete=1&id='+e.value все нормально удаляется.
    Если ставлю sleep(1) в цикле срабатывает, но все зависает.

    Задача собрать value(id) у выбранных checkbox и удалить из базы сообщения по id(value).
     
  4. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Не срабатывание может объясняться тем,что скрипт выполнился до того, как страница загрузилась. Попробуйте разместить скрипт в конце страницы.
     
  5. vitasonline

    vitasonline Активный пользователь

    С нами с:
    22 янв 2011
    Сообщения:
    6
    Симпатии:
    0
    Не помогло, я же говорю если ставлю sleep(1); в цикле, то все отлично срабатывает, но все зависает. Т.е. без for все работает, но мне нужна обработка не одного id, а массива содержащего id
     
  6. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    В яваскрипте нет слипа...
     
  7. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ну а он что говорит? Он и говорит, что у него всё зависает =)))
     
  8. vitasonline

    vitasonline Активный пользователь

    С нами с:
    22 янв 2011
    Сообщения:
    6
    Симпатии:
    0
    Если что-то делаю не так, может тогда кот-нибудь подскажет как сделать правильно hide() в цикле.
     
  9. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Вообще эта муть в ID-шками пронумероваными - отвратительная затея.
    Делается примерно так проход:

    [js]$('div[id^="message"]').each(function() {
    // Скрывай элемент
    $(this).hide().delay(1000);
    }[/js]
     
  10. vitasonline

    vitasonline Активный пользователь

    С нами с:
    22 янв 2011
    Сообщения:
    6
    Симпатии:
    0
    Короче хочу сделать как на mail.ru, когда во входящих выделяешь галочками checkbox'ы писем и нажимаешь удалить, то строки уходят из таблицы без перегрузки страницы, а письма удаляются.

    Кто подскажет как сделать такое???
     
  11. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    vitasonline
    самый оптимальный вариант - очистить и заново перестроить таблицу.
    в некоторых браузерах проблема с удалением элементов tr
     
  12. vitasonline

    vitasonline Активный пользователь

    С нами с:
    22 янв 2011
    Сообщения:
    6
    Симпатии:
    0
    а как это сделать средствами ajax ?
     
  13. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    vitasonline
    можно получить json-массив данных для вывода, очистить таблицу
    и заново её построить на основе полученного массива.

    удаление и вставка элементов - простые операции не только на jQuery, но и на чистом javascript.