Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
1

глюк с mouseover

10.04.2012, 02:45. Показов 7099. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет.
Имеются пункты меню, которые при наведении раскрываются (display:block) и исчезают (display:none), вроде все работает, но если быстро провести мышкой через пункт меню, то раскрытый блок не схлопывается.
Из-за чего это может быть?
p.s. как обновить страницу на jQuery, что-то наподобие
Javascript
1
document.location.replace()
в JS?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2012, 02:45
Ответы с готовыми решениями:

Интересный глюк. Или не глюк? Смена дефолтного пути
Вкратце объясняю: Есть приложение, которое подключается к БД Access. Путь к файлу БД в строке...

Mouseover/out
Не могу понять почему не работает onmouseout. Если убрать onmouseover то все срабатывает, но если...

Глюк или не глюк в Siglent SDS 1192CML..?
Всем привет! У меня тоже имеется Siglent SDS 1192CML, пора создавать клуб любителей ентого девайса...

Изменить mouseover
Здравствуйте, а есть скрипт который присваивает класс ко всем картинкам находящихся в div'e с id...

29
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
10.04.2012, 22:40  [ТС] 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от Nigepas Посмотреть сообщение
Надо код видеть, я ж не экстрасенс
а, забыл..
Здесь я отбираю отмеченные чекбоксами объявления, и образовавшийся массив id-шек этих объявлений передаю РНР-скрипту
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    // переменная, для построения страниц, для нового списка
    var from = parseInt($('#from').html());
 
   // Кнопка удаления собственных объявлений
    $('#del_myads').live("click",function(){
        
        var check_ch = $('#myads_list :checkbox:checked:not(#checkall_myadslist)').size();
        
        if (check_ch > 0)
        {
            var ads_num = new Array(check_ch);
 
            var j = 0;
            $('#myads_list :checkbox:checked:not(#checkall_myadslist)').each(function() {
                ads_num[j] = $(this).attr('value');
                j++;
            });
            
            // Удаляем объявления
            if (confirm('Вы действительно хотите удалить выбранные объявления?'))
            {
                delete_ads(ads_num, from);
                $("#adsajaxmess").css({'display':'block'});
//                document.location.replace("?c=user&s=my_ads");
            }
        }
        else alert('Вы не выбрали объявления для удаления');
    });
Вот ф-ии, участвующие в аякс-запросе
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
// Удалить выбранные объявления
    function delete_ads(ads_num, from)
    {
        $.post("ajax/ajax_ads_delete.php", {"ads_num": ads_num}, ads_newlist(from));   // 
    }
    
    // Обновленный список объявлений
    function ads_newlist(from)
    {
        $.get("ajax/ajax_ads_newlist.php", {"from": from}, on_success);
        function on_success(data) { $('#myads_list').html(data); }                                   
    }
Добавлено через 2 минуты
повторюсь, скрипт работает, объявления удаляются, даже и список обновляется в Мозиле, тока это мертвый список
0
40 / 40 / 14
Регистрация: 07.04.2012
Сообщений: 98
10.04.2012, 23:37 22
Ух, перемудрили чего-то

Переменная from у вас получает значение при загрузке страницы и больше не меняется. Это нормально?
Что это вообще такое #from ?

Цитата Сообщение от Love_and_Peace Посмотреть сообщение
...и образовавшийся массив id-шек...
Я вижу не массив id-шек, а массив значений
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
ads_num[j] = $(this).attr('value');
Зачем вы в колбеке одного аякса делаете еще один аякс-запрос?
Одного запроса достаточно, чтобы передать данные на сервер, сделать что-то на сервере, получить ответ сервера и сделать то, что надо в документе.

Скажите:
1. Что должен получить ajax/ajax_ads_delete.php и что он возвращает?
2. Что должен получить ajax/ajax_ads_newlist.php и что он возвращает?
3. Еще бы html увидеть, что за список, что и куда вставляться должно, что такое #from...
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.04.2012, 01:13  [ТС] 23
from нужен только для передачи в SQL-запрос, который строит новый список.
Цитата Сообщение от Nigepas Посмотреть сообщение
Зачем вы в колбеке одного аякса делаете еще один аякс-запрос?
ну незнаю, я уже не помню, покажите как правильно.
Цитата Сообщение от Nigepas Посмотреть сообщение
Я вижу не массив id-шек, а массив значений
вы не так поняли, id-шки не в смысле CSS id-шки, а id объявления из БД, получается массив значений этих id.
Цитата Сообщение от Nigepas Посмотреть сообщение
1. Что должен получить ajax/ajax_ads_delete.php и что он возвращает?
ничего не возвращает, просто удаляет и объявления и связанные с ними файлы (картинки). Это работает.
Цитата Сообщение от Nigepas Посмотреть сообщение
2. Что должен получить ajax/ajax_ads_newlist.php и что он возвращает?
А к этому файлу обращаюсь для того чтобы он вернул мне обновленный список объявлений, вроде он возвращает (я через FireBug проверял), но новый список как-будто не встроен в DOM, Мозила то показывает, что блок поменялся, но как уже сказал, это больше похоже на ширму, за которой скрывается настоящий старый список. В запрос передаю тот самый from, но такой роли, как я понимаю не играет.

Вот и список, немного длинный код..
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<div id="myads_list">
 
    <table class="F cf" cellpadding="0">
        <colgroup>
            <col class="k0vOLb" />
            <col class="Ci" />
            <col class="y5" />
            <col class="WA" />
            <col class="null" />
            <col class="yY" />
            <col class="xX" />
            <col class="xX" />
        </colgroup>
 
        <tr style="height: 45px; background: #ffffff;">
            <td class="PF xY"></td>
            <td class="xY" align="center"><input type="checkbox" title="Отметить все" class="vtip" id="checkall_myadslist" /></td>
            <td class="apU xY" align="center"></td>
            <td class="WA xY"></td>
            <td class="xY"></td>
            <td class="yX xY"></td><!--
            <td class="yf xY" align="center"></td>-->
            <td class="xW xY"></td>
            <td class="xW xY"></td>
        </tr>
        
        
        <div id="ajads" style="overflow: hidden;">
        <tr class="tr_myads" id="tr_myadsid_<?php echo $p_iid; ?>">
            <td class="PF xY"></td>
            <td class="xY" align="center">
                <input type="checkbox" title="Отметить объявление" class="vtip" name="checkmyadslist" id="check_myads_<?php echo $i; ?>" value="<?php echo $p_iid; ?>" />
            </td>
            <td class="apU xY" align="center" id="adscolortd_<?php echo $p_iid; ?>" style="padding: 0 5px 0 5xp !important; position: relative;">
                <a href="javascript: void(0);" id="adscolor_<?php echo $p_iid; ?>">
                    <img src="skins/icons/<?php echo $sun; ?>.png" title="<?php echo $tit_sun; ?>" class="vtip" />
                </a>
            </td>
            <td class="WA xY" align="center">   <!--  -->
                <a href="javascript: void(0);" id="adstop_<?php echo $p_iid; ?>">
                    <img src="skins/icons/<?php echo $top; ?>.png" title="<?php echo $tit_top; ?>" class="vtip" />
                </a>
            </td>
            <td class="xY vtip" title="Раскрыть объявление">
                <a href="<?php echo __href('c=ads&id=' . $p_iid); ?>" style="margin-left: 20px;"> <?php echo htmlspecialchars($v_my_ads['name']); ?> </a>
            </td>
            <td class="yX xY">
            </td>
            <td class="xW xY vtip" align="center" title="Дата обновления">
                <?php echo substr(getAnnDate($v_my_ads['datetime2']), 0, 10); ?>
            </td>
            <td class="xW xY vtip" align="center" title="Дата добавления">
                <?php echo substr(getAnnDate($v_my_ads['datetime']), 0, 10); ?>
            </td>
        </tr>
        <?php $i++; endforeach; ?>
        </div>
        
    </table>
</div>
Вот <div id="myads_list"> я и пытаюсь поменять с помощью аякса
0
40 / 40 / 14
Регистрация: 07.04.2012
Сообщений: 98
11.04.2012, 02:02 24
Не видя кода, плохо советовать. Вот , например, .live() тут не важен был, но и с ним можно.

Да-да про id-шки понял уже))

По #from тоже догадался уже ))

Щас посмотрю код

Добавлено через 31 минуту
Javascript
1
$.post("ajax/ajax_ads_delete.php", {"ads_num": ads_num}, ads_newlist(from));
Тут from - это данные, возвращаемые сервером в ответе и передаваемые функции ads_newlist, а если ajax/ajax_ads_delete.php ничего не возвращает, то соответственно эта переменная пуста.

Но это в общем-то и не важно вроде, получается.

У вас ajax/ajax_ads_newlist.php должно быть возвращает полностью таблицу <table class="F cf" cellpadding="0"> и только ее.

Сделайте для начала, чтоб ajax/ajax_ads_delete.php не только удалял данные, но и возвращал эту новую таблицу.

И попробуйте это

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// переменная, для построения страниц, для нового списка
    var from = parseInt($('#from').html());
 
   // Кнопка удаления собственных объявлений
    $('#del_myads').live("click",function(){
        
        var check_ch = $('#myads_list :checkbox:checked:not(#checkall_myadslist)').size();
        
        if (check_ch > 0)
        {
            var ads_num = new Array(check_ch);
 
            var j = 0;
            $('#myads_list :checkbox:checked:not(#checkall_myadslist)').each(function() {
                ads_num[j] = $(this).val();
                j++;
            });
            
            // Удаляем объявления
            if (confirm('Вы действительно хотите удалить выбранные объявления?'))
            {
                delete_ads(ads_num, from);
                $("#adsajaxmess").css({'display':'block'});
//                document.location.replace("?c=user&s=my_ads");
            }
        }
        else alert('Вы не выбрали объявления для удаления');
    });
  
// Удалить выбранные объявления и обновить таблицу
    function delete_ads(ads_num, from)
    {
        $.post("ajax/ajax_ads_delete.php", {"ads_num": ads_num, "from" : from}, function(data) {
            $('#myads_list').html(data);
        });  
        
        
    }
Добавлено через 13 минут
Кстати , этот кусок тоже можно упростить

Javascript
1
2
3
4
5
            var j = 0;
            $('#myads_list :checkbox:checked:not(#checkall_myadslist)').each(function() {
                ads_num[j] = $(this).val();
                j++;
            });
то же самое делается так
Javascript
1
2
3
            $('#myads_list :checkbox:checked:not(#checkall_myadslist)').each(function(j,el) {
                ads_num[j] = $(el).val();
            });
1
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.04.2012, 02:04  [ТС] 25
Цитата Сообщение от Nigepas Посмотреть сообщение
У вас ajax/ajax_ads_newlist.php должно быть возвращает полностью таблицу <table class="F cf" cellpadding="0"> и только ее.
без div'a, в котором таблица находится?
Цитата Сообщение от Nigepas Посмотреть сообщение
Сделайте для начала, чтоб ajax/ajax_ads_delete.php не только удалял данные, но и возвращал эту новую таблицу.
2 раза возвращать одну и ту же таблицу разными запросами?

Добавлено через 53 секунды
Цитата Сообщение от Nigepas Посмотреть сообщение
то же самое делается так
буду знать, спасибо
0
40 / 40 / 14
Регистрация: 07.04.2012
Сообщений: 98
11.04.2012, 02:20 26
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
без div'a, в котором таблица находится?
Конечно таблица нужна без дива, вы ж ее в див потом вставляете $('#myads_list').html(data);, он у вас и так никуда не девается


Цитата Сообщение от Love_and_Peace Посмотреть сообщение
2 раза возвращать одну и ту же таблицу разными запросами?
2 запроса было у вас. У меня один Аякс-запрос к скрипту php.

Javascript
1
2
3
4
5
6
7
8
// Удалить выбранные объявления и обновить таблицу
    function delete_ads(ads_num, from)
    {
        $.post("ajax/ajax_ads_delete.php", {"ads_num": ads_num, "from" : from}, function(data) {
            $('#myads_list').html(data);
        });  
                
    }
И пусть этот скрипт php (1 и тот же) и удаляет объявления , и возвращает данные (новую таблицу)

Добавлено через 9 минут
Кстати, если у вас ajax/ajax_ads_newlist.php возвращал таблицу обернутую div-ом #myads_list, то это неправильно. После вставки $('#myads_list').html(data); вы бы получили плохой результат

HTML5
1
<div id="myads_list"><div id="myads_list"><table...>...</table></div></div>
1
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.04.2012, 03:23  [ТС] 27
чуть лучше стало, в IE тоже обновляется, но(!) список не реагирует на js-действия курсора, к примеру, есть возможность выделить цветом объявление, но эта ссылка не срабатывает, еще подключен скрипт "всплывающая подсказка", он также не работает пока не перегрузить страницу ... ((( это бэд, че делать, есть идеи?
0
40 / 40 / 14
Регистрация: 07.04.2012
Сообщений: 98
11.04.2012, 03:32 28
Если у вас после каких-либо манипуляций появились элементы, которых не было на момент загрузки страницы, то обычные обработчики событий, если таковые имеются, не сработают.
Подключите все эти обработчики событий через .live()

Добавлено через 2 минуты
В первом случае .live() оказался не нужен , т.к. кнопка #del_myads не менялась.
1
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
11.04.2012, 03:37  [ТС] 29
новые элементы то не появляются, наоборот - исчезают. И эта кнопка, точнее ссылка не меняется, она общая. Щас башка чет не варит, завтра продолжу.
Спасибо дружище
0
40 / 40 / 14
Регистрация: 07.04.2012
Сообщений: 98
11.04.2012, 03:42 30
Ну элементы не просто исчезают, заменяется таблица, а значит это новые элементы, не присутствовавшие на момент загрузки страницы.

Но если ссылка общая, то надо код смотреть, возможно там ошибки...

Я тоже ушел. Рад был помочь, чем мог.
0
11.04.2012, 03:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2012, 03:42
Помогаю со студенческими работами здесь

событие mouseover
Мне нужно разместить 3 картинки таким образом чтобы они располагались по центру, внизу страницы,...

Не работает mouseover()
Доброго времени суток! Есть такой код: $('video').mouseover(function () { ...

MouseOver --> onmousedown
Добрый день ув. програмисты! Я в jquery не силен, имею общее понятие. Надеюсь на помощь и...

select mouseover
Есть select. Как при наведении курсора на определенный option получить его индекс? Добавлено...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru