【问题标题】:Link inside created DIV cause the div removed on hover创建的 DIV 内的链接导致悬停时删除 div
【发布时间】:2014-10-22 18:23:07
【问题描述】:

这是我的代码:

var tagDes = document.createElement('DIV');
                    tagDes.className = 'tagDes';
                    tagDes.style.cssText = 'position:absolute;'+
                                    'background:#282828;'+
                                    'color:#fff;'+
                                    'padding:10px;'+
                                    'top:'+(posX+hei)+'px;'+
                                    'left:'+(posY+wid)+'px;'+
                                    'font-size:10pt;';
                    tagDes.onmouseout = function(){
                                        $(this).remove();
                                    };
                    $('#main-container').append(tagDes);
                    $('.tagDes').append(array[5]+'<a class="tagMenu">sdsdssds</a>');

posX, posY, hei, wid 指的是一个定位元素。 array[5] 是一个字符串。 我想悬停li 并创建包含链接(tagMenu 类)的 div(看起来像title 属性)。但是当我将链接悬停在该 div 内时,该 div 将remove()。我要寻找的是,当我将链接悬停时,div 仍然可见,并且当我从中 mouseout 时它将从页面中删除。有什么建议吗?请帮帮我。

【问题讨论】:

  • posX 和 posY 是不是弄错了?
  • 不,它给出了正确的值。它将返回li 的位置,以便 div 可以靠近它
  • 我的意思是:'top:'+(posX+hei)+'px;' 使用水平位置和高度,'left:'+(posY+wid)+'px;' 使用垂直位置和宽度。那么 posX 和 posY 是不是走错路了?

标签: javascript jquery html append mouseout


【解决方案1】:

试试这样的:

 tagDes.onmouseout = function(e){
 if (e.toElement.parentNode == this || e.toElement == this) {
       return;
     }
   $(this).remove();
   };

【讨论】:

    【解决方案2】:

    如果我理解正确,您想将onmouseout 事件绑定到内部链接元素。那么代码可以是这样的(我使用了更多的jQuery来简化它):

    var $tagDes = $('<div class="tagDes"></div>').css({
        background: '#282828',
        color: '#fff',
        padding: '10px',
        top: (posX + hei) + 'px',
        left: (posY + wid) + 'px',
        fontSize: '10pt'
    })
    .append(array[5] + '<a class="tagMenu">sdsdssds</a>')
    .appendTo('#main-container');
    
    $tagDes.on('mouseleave', function() {
        $tagDes.remove();
    });
    

    【讨论】:

    • 哇...这离我的交易太近了。但是现在,div 不是remove onmouseout pal。
    • 它将在链接鼠标移出时被删除。您希望它在 div mouseout 本身上删除吗?
    • 是的,但它非常接近我的要求。我会投票给你,伙计。
    • 哦,我明白了,所以你需要mouseleave 事件而不是mouseout。请参阅更新的代码。无论如何,很高兴您找到了适合您的解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 2013-01-13
    • 2016-05-01
    • 1970-01-01
    相关资源
    最近更新 更多