Jquery点击并悬停&显示/隐藏功能奇怪

我需要在我的页面添加一个迷你工具提示,并且由于奇怪的原因,不能使用jquery提供的工具提示,所以我只是自己制作 - 除了它不起作用!这是简单的代码:
$('#nav-about a').click(function(){
     showTooltip('#tooltip-about')
}).hover(function(){
     showTooltip('#tooltip-about')
});
function showTooltip(e){
    if( $(e).css('display') =="none" ) {
      $(e).show();
    } else {
      $(e).hide();
    }
    return false;
}
如果我悬停,则会显示工具提示。但是,如果我点击,它就会被隐藏。基本上,当我点击它时,将css('display')读为隐藏而不是阻塞。想法为什么??我这样做的唯一原因是iPad显示屏。大多数用户应该看到翻转提示,但iPad用户不能。欢迎其他方案!!! 谢谢! 更新:这是有效的。我的逻辑错了:)。我只需要在userAgent上进行分支,而不是一次尝试处理两件事。
var isiPad = navigator.userAgent.match(/iPad/i) != null;
if (isiPad){
   $('#nav-about a').click(function(){
    showTooltip('#tooltip-about')
   })
}else{
   $('#nav-about a').hover(function(){
    showTooltip('#tooltip-about')
   });
}
    
已邀请:
你可以将你的
showTooltip()
功能的主体减少到......
function showTooltip(e){
    $(e).toggle();
}
如果您确定将始终传递jQuery对象,您也可能会丢失
$()
包装。但是,再次包装它并没有什么坏处,它为您提供了传递选择器或本机DOM元素的灵活性。 文档。 此外,为了明确检查元素是否隐藏,您可以使用...
element.is(':hidden')
文档。 请记住,此选择器认为具有
visibility: hidden
opacity: 0
的元素可见。     
为什么不使用jquery中的toggle类?例如:http://api.jquery.com/toggle/
('#tooltip-about').toggle();
    
function showTooltip(e){
    $(e).is(':hidden') ? $(e).show() : $(e).hide();
    return false;
}

$('#nav-about a').hover(
    function(){
        showTooltip('#tooltip-about');
    },
    function(){
       showTooltip('#tooltip-about');
    }
);
    
试试这个:
function showTooltip(e){
    if( $(e).css('display') =="none" ) {
      $(e).css('display', '');
    } else {
      $(e).css('display', 'none');
    }
    return false;
}
    
问题是你不能单击而不是将鼠标悬停在元素上。因此,悬停事件显示工具提示,然后click事件将其关闭。 您需要某种方法来确定用户是否正在使用允许它们悬停的设备,并且仅绑定适当的事件。 你可以使用类似的东西:
function isiPhone(){
    return (
        (navigator.platform.indexOf("iPhone") != -1) ||
        (navigator.platform.indexOf("iPod") != -1) ||
        (navigator.platform.indexOf("iPad") != -1)
    );
}

if (isiPhone()) {
    $('#nav-about a').click(showTooltip)
else 
    $('#nav-about a').hover(showTooltip)

function showTooltip(e) {
    e.preventDefault();
    $('#tooltip-about').toggle();
}
    

要回复问题请先登录注册