Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在另一个标签上方的鼠标上切换div的可见性_Javascript_Jquery_Html_Css_Jquery Ui - Fatal编程技术网

Javascript 如何在另一个标签上方的鼠标上切换div的可见性

Javascript 如何在另一个标签上方的鼠标上切换div的可见性,javascript,jquery,html,css,jquery-ui,Javascript,Jquery,Html,Css,Jquery Ui,我将尽可能简单,当有人将鼠标移到a标记上时,我将尝试在div上实现一个简单的可见性切换,有点像这个链接上的四个按钮: 现在的问题是,我希望它出现在标签上方的鼠标上,或者希望它可见,但一旦我隐藏了div,它就再也不会回来了,我尝试了多种方法,有些是 $("#function").on("mouseover",this, function () { $(this).addClass("show"); }) $("#function").on(

我将尽可能简单,当有人将鼠标移到a标记上时,我将尝试在div上实现一个简单的可见性切换,有点像这个链接上的四个按钮:

现在的问题是,我希望它出现在标签上方的鼠标上,或者希望它可见,但一旦我隐藏了div,它就再也不会回来了,我尝试了多种方法,有些是

$("#function").on("mouseover",this, function () {
            $(this).addClass("show");
        })
        $("#function").on("mouseout",this, function () {
            $(this).removeClass("show");
            $(this).addClass("hide");
        })
另一个是:

$("#function").hover(
                  function () {
                    $(this).addClass("hide");
                  },
                  function () {
                    $(this).removeClass("hide");
                  }

        );
而且

$("#butt").on("mouseover", this, function(){
                $(this).find("div#function").show();
                //$("#function").toggleClass("visible");
            });
            $("#butt").on("mouseout", this, function(){
                $(this).find("div#function").hide();
                //$("#function").toggleClass("visible");
            });

我知道了,选择器有点变化

$("#butt")
  .mouseover(function () {
    $("#function").show();
  })
  .mouseout(function () {
    $("#function").hide();
  });

我希望这是你正在寻找的解决方案

只需将以下代码放在您的
标记下面:

<script type="text/javascript">
function toggle(id) {
   var e = document.getElementById(id);
   if(e.style.display == 'block')
      e.style.display = 'none';
   else
      e.style.display = 'block';
}
</script>

功能切换(id){
var e=document.getElementById(id);
如果(e.style.display=='block')
e、 style.display='none';
其他的
e、 style.display='block';
}
这是一个链接和切换的div:

<a href="javascript: return false();" onmouseover="toggle('toggleme');">
    Mouseover this link to toggle the visibility of #toggleme
</a>
<div id="toggleme">This div is "toggled"</div>

此分区已“切换”

这应该可以。检查JSFIDLE。这里的基本思想是在
mouseenter
事件中将一个类(.show)添加到根div中,该类然后使div中隐藏的
由于以下原因显示出来

.shown ul{
    display: block !important;
}

编辑:

做了一些小的css更改,以更好地反映您正在寻找的行为,但是您必须更改css以基本上适应您自己的代码。我希望这有帮助

$("document").ready(function(){
    $(".wrap").hover(
        function () {
            $(this).addClass("shown");
       },
       function () {
           $(this).removeClass("shown");
       }
    );
});

你应该使用鼠标指针而不是鼠标指针。这是因为当您在元素内移动时,将触发鼠标悬停事件。转到此处并滚动至底部,以检查mouseover和mouseenter之间的差异

mouseenter事件仅在您输入元素时触发,而不会在元素内移动

这就是你想要的解决方案。它几乎与您提供的站点相似
JavaScript

<script>
$(document).ready(function()
{
    $("#function").mouseenter(function(event)
    {
        event.stopPropagation()
        $(this).addClass("show");
    }).mouseleave(function(event)
    {
        event.stopPropagation()
        $(this).removeClass("show");
    })
});
</script>

$(文档).ready(函数()
{
$(“#函数”).mouseenter(函数(事件)
{
event.stopPropagation()
$(this.addClass(“show”);
}).mouseleave(功能(事件)
{
event.stopPropagation()
$(this.removeClass(“show”);
})
});
风格


.functionBlock{宽度:200px;高度:200px;边框:1px实心#CCC;填充:15px;}
.functionBlock ul{可见性:隐藏}
.functionBlock.show ul{可见性:可见;}
HTML


演示
  • 苹果
  • 三星
jsFiddle上的示例

html是

<a href="#" id="link">LINK</a>
<div id="DIV" style="display:none">Your content in it</div>

你的内容在里面

这里不需要Javascript。这仅在CSS中是可能的

HTML:


和播放。

在这些尝试中,您是从阅读文档开始的,还是只是在上尝试其中一个示例,还是打开控制台(F12)检查错误(有几个错误)?我认为,您不能“取消覆盖”一个不可见的元素。试着让它完全透明。正如我提到的,一旦我添加或在代码中提到,类隐藏被添加,它永远不会回来,即使在鼠标上,它也不会…@Hunain-Duh,它是隐藏的,你怎么期望鼠标移动到不存在的东西上?更改后的代码正在工作,但是如果你看到我的参考网站,mouseover/mouseenter a标记位于toggling div下面,现在当我将鼠标移到a标记上时,它会连续切换,不会停止;将此切换div放置在任何其他位置都可以实现功能更改后的代码正在工作,但如果您看到我的参考网站,鼠标悬停/鼠标悬停a标记位于切换div下方,现在当我将鼠标悬停a标记时,它将不停地连续切换;将此切换div放置在其他任何位置可实现此功能您是否将事件更改为mouseenter而不是mouseover?这是因为当您在元素内移动时,将触发鼠标悬停事件。转到此处并滚动至底部,以检查mouseover和mouseenter之间的差异。mouseenter事件将仅在您输入元素时触发,但不会在元素内移动。更改的代码正在工作,但如果您看到我的参考网站,mouseover/mouseenter a标记位于切换div下,现在当我将鼠标移到a标记上时,它将不停地连续切换;将此切换div放置在任何其他位置都可以实现该功能
<div id="function" class="functionBlock">
    <h5>Demo </h5>
    <ul>
        <li>APPLE</li>
        <li>SAMSUNG</li>
    </ul>
</div>
$("#link").hover(function(){
    $("#DIV").slideToggle();
});
<a href="#" id="link">LINK</a>
<div id="DIV" style="display:none">Your content in it</div>
<div class="panel">
    <div class="teaser"><img src="http://lorempixel.com/300/400"/></div>
    <div class="info">
        <ul>
            <li>Go here ...</li>
            <li>Or there ...</li>
        </ul>
    </div>
</div>
.panel {
    width: 300px;
    height: 400px;
}

.info {
    display: none;
}

.panel:hover .teaser {
    display: none;
}

.panel:hover .info {
    display: block;
}