Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/26: Рейтинг темы: голосов - 26, средняя оценка - 4.54
14 / 14 / 3
Регистрация: 21.09.2012
Сообщений: 93

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

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

Студворк — интернет-сервис помощи студентам
Всем добрый день. Уважаемые форумчане прошу Вашей помощи в разрешении следующей проблемы, может это и не проблема, но как её решить я не знаю. Я пытаюсь построить свой контрол 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
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru