2014-11-19 4 views
1

Я использую следующий код для добавления строки в моем подменю:Удалить тег после висения

$("li.mega-menu-megamenu a").hover(function(){ 
    $("<div class='remove'><hr /></div>").insertAfter("#mega-menu-primary-2 li:last-child"); 
}); 

Его прекрасно работает fine.But вопрос в том, что я хочу, чтобы удалить этот тег, когда нет парения.

Я пробовал: $("li.mega-menu-megamenu a").unbind('hover'); Но при этом он не будет добавлять теги html вообще.

Как удалить строку при отсутствии наведения на меню?

+0

Wanna 'удалить tag' или удалить либо' class' – Benjamin

+0

Хотите удалить метку. – Twix

+0

@Twix Правильный ли какой-либо из ответов ниже? Нажмите зеленую галочку, чтобы выбрать ее. – styfle

ответ

0

Вы можете использовать MouseOut событие для этого

$("li.mega-menu-megamenu a").mouseout(function() { 
    $(".remove").remove(); 
}); 
$("li.mega-menu-megamenu a").mouseenter(function() { 
    $("<div class='remove'><hr /></div>").insertAfter("#mega-menu-primary-2 li:last-child"); 
}); 

Другим возможным решением является, вместо добавления и удаления элемента можно просто скрыть/показать.

$(document).ready(funnction() { 
    $("<div class='remove'><hr /></div>").insertAfter("#mega-menu-primary-2 li:last-child"); 
    $(".remove").hide(); 
    $("li.mega-menu-megamenu a").mouseout(function() { 
     $(".remove").hide(); 
    }); 
    $("li.mega-menu-megamenu a").mouseenter(function() { 
     $(".remove").show(); 
    }); 
}); 
+1

hover имеет второй параметр для mouseout ... – reyaner

+0

Ничего из этого не сработало для меня :( – Twix

+0

@Twix вы можете поделиться html или создать скрипку для него? –

0

Я бы выбрал для скрытия/показа, чтобы вы не продолжали добавлять/удалять из DOM.

// Add the element to the DOM once and then hide it 
var $removeElement = $("<div class='remove'><hr /></div>") 
    .insertAfter("#mega-menu-primary-2 li:last-child") 
    .hide(); 

// On mouseover we show the $removeElement and mouseout will hide it 
$("li.mega-menu-megamenu a") 
    .hover(function(){ $removeElement.fadeIn(); }, 
      function() { $removeElement.fadeOut(); } 
    ); 

Я использовал fadeIn/fadeOut, но вместо этого вы можете использовать show/hide, если хотите.

+0

странно .. Не работает. Когда я проверяю, тег не входит :( – Twix

+0

@Twix Ваши селекторы, вероятно, не выбирают подходящие элементы в DOM. Вам нужно будет отправить еще несколько кода. – styfle

+0

Позвольте мне еще раз проверить! – Twix

0

Вы можете передать 2 функции для зависания. Второй вызов будет вызываться, когда мышь покидает элемент.

$("li.mega-menu-megamenu a").hover(function() { 
    $("<div class='remove'><hr /></div>").insertAfter("#mega-menu-primary-2 li:last-child"); 
}, 
function() { 
    $(".remove").remove(); 
}); 
0

Другой способ:

$('li.mega-menu-megamenu a').on({ 
    'mouseenter':function(){ 
     $("<div class='remove'><hr /></div>").insertAfter("#mega-menu-primary-2 li:last-child"); 
    },'mouseleave':function(){ 
     $(".remove").remove(); 
    } 
}); 
+0

Спасибо за ответ! Его работа. Но он удалит строку на мыши. У меня есть большое подменю. Поэтому, когда я перехожу к элементу подменю, линия становится dispperead. Я хочу, чтобы линия была там до открытия подменю. – Twix

+0

Нужно использовать stopPropagation() для вашего подменю. – Benjamin

+0

Можете ли вы мне посоветовать что? – Twix