Javascript 如何修复:如果没有<;a>;元素?

Javascript 如何修复:如果没有<;a>;元素?,javascript,iphone,html,hover,Javascript,Iphone,Html,Hover,如何修复:如果没有 我回答了一个JavaScript方法来解决这个问题,但我想知道是否有不同的方法来解决这个问题(可能更好)您可以使用JavaScript来解决这个问题。 以下脚本将hover as类添加到元素中: <script type="text/javascript"> $("li").hover( function () { $(this).addClass("hover"); }, function () { $(this).remov

如何修复
:如果没有

  • 我回答了一个JavaScript方法来解决这个问题,但我想知道是否有不同的方法来解决这个问题(可能更好)

    您可以使用JavaScript来解决这个问题。 以下脚本将hover as类添加到
  • 元素中:

    <script type="text/javascript">
    $("li").hover(
      function () {
        $(this).addClass("hover");
      },
      function () {
        $(this).removeClass("hover");
      }
    );  
    </script>
    
    将是:

    ul li:hover ul,
    ul li.hover ul,{
        display:block;
    }
    
    jQuery文档:


    尽管iPhone/etc没有明确的悬停状态,但当用户点击链接时,链接的悬停状态会被触发。一般来说,双击实际上会跟随链接


    也许可以重新构造HTML,使您的锚定具有悬停状态,而不仅仅是列表项。不需要JS。

    使iPhone尊重悬停状态

    <ul>
      <li onclick="//">test</li>
      <li onclick="//">test</li>
      <li onclick="//">test</li>
    </ul>
    
    • 测试
    • 测试
    • 测试

    将:焦点和:活动添加到您的样式中:

    ul li ul{显示:无}
    ul-li:focus-ul,ul-li:active-ul{display:block}

    我找到了处理div:hover的最佳方法,可以在iphone上工作。不使用javascript

    使用
    光标:指针
    使元素的行为类似于锚定标记

    css

    ul li{光标:指针}

    你还会注意到,当你在下拉菜单外点击时,它不会在iphone上关闭,除非你点击一个真正的链接。因为我们在手机上看不到光标,这就是我提出的解决方案

    css

    正文{光标:指针}


    悬停不是iPhone界面的状态。点击或触摸。你必须等待热敏平板电脑和手机应用鼠标悬停…我知道答案,但我还不能发布。我必须自己解决这个问题,但在互联网上的其他任何地方都找不到。但是因为我是新来的,所以我还不能发布它。没有链接,我正在悬停一个列表项,我想在这个列表中显示一个ul。我不想使用锚,因为它没有锚。你能发布你的HTML吗?我在问题中添加了HTML示例好的,我明白你的意思。我个人会将它们制作成锚,这样就根本不需要JS了,但我看到您已经将JS答案标记为您的解决方案,所以它一定不是问题。我的想法是:
    • […]
    这不是问题,但我正在寻找更好的方法。。。正如我在问题中所描述的,这是一个选项,但我不想给每个li添加onclick。这也适用于JavaScript,但我的答案只使用了一小段代码。但是对于响应,这是一个很好的选择(+1)你确定这有效吗?如果你能给我举一个我可以在iPhone上测试的工作示例,我会投票支持你的答案。请详细说明你的答案,一个链接是不够的。哇,这个技巧太棒了。我会将
    body{cursor:pointer}
    更改为
    html.touch{cursor:pointer}
    ,以避免指针出现在非触摸设备上。当然,在检测到触摸设备后,您必须向html标记添加“touch”类。
    ul li:hover ul,
    ul li.hover ul,{
        display:block;
    }
    
    <ul>
      <li onclick="//">test</li>
      <li onclick="//">test</li>
      <li onclick="//">test</li>
    </ul>
    
    //ipad and iphone fix
    if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {
        $(".menu li a").click(function(){
            //we just need to attach a click event listener to provoke iPhone/iPod/iPad's hover event
            //strange
        });
    }