Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.04.2019, 13:09
Новичок на форуме
Отправить личное сообщение для Зик Посмотреть профиль Найти все сообщения от Зик
 
Регистрация: 30.04.2019
Сообщений: 3

JQuery не хочет работать с созданным новым элементом
Я создаю новый элемент в боковую панель и затем хочу закрывать боковую панель, когда мышка уходит с этого нового элемента, но jQuery не видит мой новый элемент, функция ( mouseenter ) не работает, хотя должна работать.

Погуглил попытался использовать функцию on, но видимо я так правильно и не понял, как мне её использовать, в итоге так ничего и не показывает.

Создание элемента:
$("#sidebar-click").click(function(){
  if($('.his-mouse-hide','#hide-add').length == 0){
        $('#hide-add').append('<div class="his-mouse-hide"></div>');
        $('.his-mouse-hide').width( $('.group-side-context').width() + ($('.group-side-context').width() / 10) );
  };
});



Закрытие боковой панели:
$(".his-mouse-hide").mouseenter(function(){
  alert("Xyx");
  $(".his-mouse-hide").one("mouseleave", function(){
    alert("Pabotaet");
  });
});



И то, что я пытался сделать с on, но никак не получается:
$("body").on('mouseenter','.his-mouse-hide',function(event){
  alert("Xyx");
});



jQuery просто не реагирует на мой новый элемент, программирую в c#, так что понимаю логику js и jquery достаточно слабо, как же всё же заставить jquery увидеть мой новый элемент и работать с ним ?
Ответить с цитированием
  #2 (permalink)  
Старый 30.04.2019, 13:28
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Зачем дважды тема в разных причем не в нужном разделе.

А почему one("mouseleave"..., что после закрытия удаляется кнопка?
И делегировать нужно всегда ближайшему родителю, который есть на странице всегда.
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2019, 13:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Зик
$('.group-side-context').width() + ($('.group-side-context').width() / 10)
Это будет $('.group-side-context').width() * 1.1
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2019, 14:00
Новичок на форуме
Отправить личное сообщение для Зик Посмотреть профиль Найти все сообщения от Зик
 
Регистрация: 30.04.2019
Сообщений: 3

Во-первых я не понял к какой теме это отнести, решил, что модерация просто удалит пост в не правильной теме.
Во-вторых я знаю, что *1.1 даст тот же результат, я просто тестировал.
В-третьих это не кнопка, это блок.
.group-side-context - это блок всей левой боковой панели.
.his-mouse-hide - это блок который я создаю такого же размера только больше и в том же месте.

Родитель у них один - это #hide-add.

И вот когда я нажимаю кнопку открыть боковую панель, он её открывает и создаёт пустой div, который слегка больше этой боковой панели. Я хочу, чтобы когда я отводил мышку от этого нового элемента(.his-mouse-hide) то вся боковая панель убиралась.

Убирается и открывается она классом у #hide-add,
context-sidebar-active - открыт
context-sidebar - закрыт

По моей логике, примерно так должно выглядеть
$("#hide-add").on('mouseenter','.his-mouse-hide',function(event){
  $(this).on('mouseleave','.his-mouse-hide',function(){
    $(".group-side-context").parent().removeClass("context-sidebar-active").addClass("context-sidebar");
  });
});

Но я даже не знаю, зачем нужен( и нужен ли ) event внутри function, по идее когда наводишь на новый элемент, он ждёт когда ты уберёшь мышку и затем срабатывает переключение классов, как работают делегаты в js я не знаю, мне по сути нужно только этот маленький кусочек кода решить, как описать правильно, но с этим у меня проблемы по этому и пришёл на форум =)
Ответить с цитированием
  #5 (permalink)  
Старый 30.04.2019, 14:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если открывалась/закрывалась, то зачем ее создавать, может проще показывать/скрывать уже имеющееся?

Метод .one() это установка одноразового обработчика события, то есть раз сработает и все. Поэтому не понятно чего вы творите.

Последний раз редактировалось laimas, 30.04.2019 в 14:24.
Ответить с цитированием
  #6 (permalink)  
Старый 30.04.2019, 14:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,205

Сообщение от Зик
программирую в c#, так что понимаю логику js и jquery достаточно слабо
Сделай небольшой тестовый пример, на нем можно будет показать "логику js и jquery"...
Сообщение от Зик
решил, что модерация просто удалит пост в не правильной теме
Я убрал дубль...
Ответить с цитированием
  #7 (permalink)  
Старый 30.04.2019, 14:26
Новичок на форуме
Отправить личное сообщение для Зик Посмотреть профиль Найти все сообщения от Зик
 
Регистрация: 30.04.2019
Сообщений: 3

Всё я разобрался, у меня всё правильно работает, просто один div блок находил на мой, по этому и не работал js
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сломал всю голову.. Посмотрите спецы.. Не хочет работать страница в mozilla-firefox.. ProniK Ваши сайты и скрипты 1 02.06.2010 19:33
Что-то onmouseup у меня не хочет правильно работать. vahrusha Элементы интерфейса 5 10.04.2010 00:00
Функция которая работает на OnLoad не хочет работать на OnClick libinstyle Элементы интерфейса 6 23.03.2010 01:42
как заставить jQuery работать с переменными gooody jQuery 1 19.02.2010 13:10
GetElementById не хочет работать в динамической форме Игорёk Events/DOM/Window 8 23.06.2009 13:27