Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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 悬停时截取显示更改?_Javascript_Css - Fatal编程技术网

Javascript 悬停时截取显示更改?

Javascript 悬停时截取显示更改?,javascript,css,Javascript,Css,我有一些元素,在悬停时,切换子对象的显示(无/块)。不幸的是,我不能通过CSS转换淡入显示。使用不透明度也不起作用,因为悬停区域扩展到不透明度:0 ul,并且两者的组合(过渡不透明度,但仍然切换显示)似乎不起作用 有没有一种方法可以通过Javascript截获显示更改,并使其在block和none之间消失?是否有其他建议(我也尝试了高度:0/自动切换,效果不好)?我更喜欢截取方法,而不是纯JS方法,以防JS被禁用或其他情况。如果我理解正确的话。假设是这样的: 您可以在父对象上侦听鼠标悬停,因为它

我有一些元素,在悬停时,切换子对象的显示(无/块)。不幸的是,我不能通过CSS转换淡入显示。使用不透明度也不起作用,因为悬停区域扩展到不透明度:0 ul,并且两者的组合(过渡不透明度,但仍然切换显示)似乎不起作用


有没有一种方法可以通过Javascript截获显示更改,并使其在block和none之间消失?是否有其他建议(我也尝试了高度:0/自动切换,效果不好)?我更喜欢截取方法,而不是纯JS方法,以防JS被禁用或其他情况。

如果我理解正确的话。假设是这样的:

    您可以在父对象上侦听鼠标悬停,因为它包含子对象:

    var parent      = document.getElementsByClassName('nav-container')[0];
    var connect     = function (element, event, callback) {/* I think you */};
    var disconnect  = function (handle) {                  /* can find */};
    var addClass = function (element, className) {      /* these elsewhere. */};
    var removeClass = function (element, className) {      /* ... */};
    var hoverHandle = connect(parent, 'hover', function (event) {
        addClass(parent, 'hovered');
        if (blurHandle) {
            disconnect(blurHandle);
        }
    });
    var blurHandle = = connect(parent, 'blur', function (event) {
        removeClass(parent, 'hovered');
        if (hoverHandle) {
            disconnect(hoverHandle);
        }
    });  
    
    然后在CSS中:

    .nav-container > ul {
        display: none;
        /* do fade out */
    } 
    .nav-container.hovered > ul {
        display: block;
        /* do fade in */
    }
    
    如果您使用的是jQuery 1.7,那么它将变成:

    var navContainers = $('.nav-container');
    navContainers.on('hover', function () {
         $(this).toggleClass('hovered');
    });
    navContainers.on('blur', function () {
        $(this).toggleClass('hovered');
    });
    

    如果我理解正确的话。假设是这样的:

      您可以在父对象上侦听鼠标悬停,因为它包含子对象:

      var parent      = document.getElementsByClassName('nav-container')[0];
      var connect     = function (element, event, callback) {/* I think you */};
      var disconnect  = function (handle) {                  /* can find */};
      var addClass = function (element, className) {      /* these elsewhere. */};
      var removeClass = function (element, className) {      /* ... */};
      var hoverHandle = connect(parent, 'hover', function (event) {
          addClass(parent, 'hovered');
          if (blurHandle) {
              disconnect(blurHandle);
          }
      });
      var blurHandle = = connect(parent, 'blur', function (event) {
          removeClass(parent, 'hovered');
          if (hoverHandle) {
              disconnect(hoverHandle);
          }
      });  
      
      然后在CSS中:

      .nav-container > ul {
          display: none;
          /* do fade out */
      } 
      .nav-container.hovered > ul {
          display: block;
          /* do fade in */
      }
      
      如果您使用的是jQuery 1.7,那么它将变成:

      var navContainers = $('.nav-container');
      navContainers.on('hover', function () {
           $(this).toggleClass('hovered');
      });
      navContainers.on('blur', function () {
          $(this).toggleClass('hovered');
      });
      

      你能发布你的html吗?你可以使用下面的例子。像:
      • 嗨。
        • 这样的东西就足够了。你能发布你的html吗?你可以使用下面的例子。任何类似于:
          • 的内容都可以。
            • 就足够了。编辑:有几个输入错误。谢谢!我正在使用jquery,里面有什么东西可以帮助简化您的代码吗?相当多:)我将添加一个修订版。编辑:有几个输入错误。谢谢!我正在使用jquery,其中是否有一些东西可以帮助简化您的代码?相当多:)我将添加一个修订。