14 / 14 / 3
Регистрация: 21.09.2012
Сообщений: 93

Как отловить событие нажатия левой кнопки мыши по дочернему элементу

20.02.2013, 11:08. Показов 4704. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день. Уважаемые форумчане прошу Вашей помощи в разрешении следующей проблемы, может это и не проблема, но как её решить я не знаю. Я пытаюсь построить свой контрол treeview. Строю его в проекте asp.net mvc 3. На клиентской части с помощью razor я создаю первый уровень меню:
HTML5
1
2
3
4
5
6
7
8
9
<ul id="TreeView" class="groupNode">
    @foreach(System.Data.DataRow row in @Model.Rows)
    {
        <li id=@row[0]:@row[1] >
            <div class="hide"></div>
            <span><a href="javascript://" onmousedown="cn(this,event);" onmouseover="in_menu=true;" onmouseout="in_menu=false;" class="black">@row[4]</a></span>
        </li>
    }
</ul>
дальше при нажатии на первый элемент, к примеру, на сервер отправляется id данного элемента. По этому 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
29
30
31
32
33
 //click on the node
        $('li').click(function (event) {
            
            var htmlText = ""; // text must contain information about children nodes
            var result = $(this).attr("id"); // id main node
            var mainNode = $(this); //main node
            //            var startServer = new Date();
            
 
            //sent information about main node, and take information about children nodes 
            $.getJSON('@Url.Action("GetNodes")', { res: result }, function (data) {
                
                var nodeInformation;
 
                if (data.Length != 0 && mainNode.children("ul.groupNode").length == 0) {
                    htmlText += '<ul class="groupNode">'
                    $.each(data, function () {
                        nodeInformation = $(this)[0].split(';');
                        htmlText += '<li id="' + nodeInformation[0] + '" ><div></div>' +
                                        '<span><a href="javascript://" onmousedown="cn(this,event);" onmouseover="in_menu=true;"   onmouseout="in_menu=false;" class="black">' + nodeInformation[1] + '</a></span>' +
                                    '</li>';
                    });
                    htmlText += '</ul>'
                    mainNode.append(htmlText);
                    AddClassIntoNode(mainNode); // add class into new nodes
                }
            });
            ShowOrHide(mainNode);
            event.stopPropagation();
            $('ul.groupNode', this).toggle(); //toggle select node
 
           
        });
Может написано коряво, но работает. Проблема следующая, когда я хочу нажать уже по дочернему элементу, для получения соответственно уже его дочерних элементов, мне на сервер приходит id моего первого элемента, то есть
id родителя данного элемента. Как сделать так что бы событие срабатывало на нажатом элементе.

Добавлено через 3 минуты
Забавно получается, если создать все элементы сразу, то событие работает так как надо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.02.2013, 11:08
Ответы с готовыми решениями:

Как отловить событие перемещения курсора при зажатой левой кнопке мыши
Искал на форуме не нашел как можно реализовать такую штуку? Хочу отловить событие перемещения курсора при зажатой левой кнопке мыши. К...

Как отловить событие обновления? (нажатия кнопки F5)
How to catch event when user press 'Refresh' button(or F5)? Any help ,please Thanks in advance,Sergey.

Отловить нажатие левой кнопки мыши
Всем привет, я совсем новичок, пытаюсь отловить событие - нажатие кнопок мыши, но к сожалению не получается. Нашёл кучу косвенных...

8
49 / 49 / 14
Регистрация: 21.03.2011
Сообщений: 113
20.02.2013, 11:14
всё правильно, у вас дочернии элементы создаются уже после того, как выгружена вся страница, попробуйте обрабоку нажатия на li запихать в функцию и повесить на li onclick
1
24 / 24 / 8
Регистрация: 27.02.2012
Сообщений: 492
20.02.2013, 11:23
Andrew2, в дочерних элементах прописывай return false!
Наподобие этого:
HTML5
1
2
3
4
<li id=@row[0]:@row[1] >
            <div class="hide"></div>
            <span><a href="javascript://" onmousedown="cn(this,event); return false;" onmouseover="in_menu=true;" onmouseout="in_menu=false;" class="black">@row[4]</a></span>
        </li>
1
14 / 14 / 3
Регистрация: 21.09.2012
Сообщений: 93
20.02.2013, 11:29  [ТС]
Скажите .on решит мою проблему?

Добавлено через 4 минуты
$('li').on('click',function (event)
0
24 / 24 / 8
Регистрация: 27.02.2012
Сообщений: 492
20.02.2013, 11:48
Andrew2, зачем эти лишние строки! Просто пропиши return false
0
14 / 14 / 3
Регистрация: 21.09.2012
Сообщений: 93
20.02.2013, 11:50  [ТС]
Цитата Сообщение от Zazu Посмотреть сообщение
Andrew2, зачем эти лишние строки! Просто пропиши return false
приведи пример пожалуйста
0
24 / 24 / 8
Регистрация: 27.02.2012
Сообщений: 492
20.02.2013, 11:57
В дочерних элементах прописывай!
0
14 / 14 / 3
Регистрация: 21.09.2012
Сообщений: 93
20.02.2013, 11:57  [ТС]
я просто не пойму ты говоришь о добавлении return false в обработчик
0
24 / 24 / 8
Регистрация: 27.02.2012
Сообщений: 492
20.02.2013, 11:58
HTML5
1
2
3
4
<li id=@row[0]:@row[1] >
            <div class="hide"></div>
            <span><a href="javascript://" onmousedown="cn(this,event); return false;" onmouseover="in_menu=true;" onmouseout="in_menu=false;" class="black">@row[4]</a></span>
        </li>
Если <span> это дочерний элемент то так(onmousedown="cn(this,event); return false;")!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.02.2013, 11:58
Помогаю со студенческими работами здесь

При нажати левой кнопки мыши в месте нажатия отображается зеленый кружок, а при нажатии правой кнопки мыши красный квад
При нажати левой кнопки мыши в месте нажатия отображается зеленый кружок, а при нажатии правой кнопки мыши красный квадрат. При повторном...

Отловить нажатие левой кнопки мыши на картинке
Всем Привет! я только начал изучать directx, у меня появился вопрос : Итак, я решил сделать вывод на экран картинки и по нажатию левой...

Отловить нажатие левой кнопки мыши в системе
Как отловить нажатие левой кнопки мыши в системе? Не в моей программе, а на любом окне в Win.

Имитация нажатия левой кнопки мыши
Нужна имитация нажатия левой кнопки мыши только для конкретного окна/программы, то есть не это: ...

Имитация нажатия левой кнопки мыши
Подскажите, как в Qt сгенерировать событие нажатия левой кнопки мыши?


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru