Javascript 使用jquery隐藏依赖于操作系统的CSS元素

Javascript 使用jquery隐藏依赖于操作系统的CSS元素,javascript,jquery,css,show-hide,Javascript,Jquery,Css,Show Hide,我试图简单地隐藏/显示一个元素,这取决于你是否使用mac、windows、iphone、ipad等 我有两个p元素: p1-我想在windows上显示 p2-我想在其他任何东西上显示(mac/iphone/ipad等) 我在这里发现了一个脚本,显然可以检测操作系统: 因此,我在链接到jquery之后链接到脚本,再加上这个链接到页面标题: if ($.client.os == 'Mac') { $('#download').hide(); $('#register').show(); }

我试图简单地隐藏/显示一个元素,这取决于你是否使用mac、windows、iphone、ipad等

我有两个p元素: p1-我想在windows上显示 p2-我想在其他任何东西上显示(mac/iphone/ipad等)

我在这里发现了一个脚本,显然可以检测操作系统:

因此,我在链接到jquery之后链接到脚本,再加上这个链接到页面标题:

if ($.client.os == 'Mac') {
    $('#download').hide(); $('#register').show();
}

if ($.client.os == 'iPhone') {
    $('#download').hide(); $('#register').show();
}

if ($.client.os == 'Windows') {
    $('#download').show(); $('#register').hide();
}
我无法让它工作,有什么想法吗?

有一些解决你问题的方法。鉴于您指定的属性,您需要做的只是:

if (navigator.appVersion.indexOf("Win")!=-1) {
    $('#register').hide();
    $('#download').show();
}
您不需要显式显示元素,因为客户端不会更改操作系统。只需将
#download
#register
的基本可见性设置为您的“默认”配置(将
#download{display:none;}
放在CSS中),并在必要时让
.hide()
.show()
覆盖它们

如果您需要更高级的操作系统检测,您可以通过使用适当的操作系统标记替换
“Win”
来添加其他规则


编辑修复了jsFiddle:

$.client.os
的值是多少?有错误吗?您可能希望查看用户代理而不是操作系统。您应该将操作系统的类添加到body标记,并根据body类在CSS中隐藏您的内容。您是否包括jquery.client。js@TamilSelvan是的,我包括了它。@Huang,你有这样一个例子吗?谢谢你,但是如果我有两个元素,这就没有意义了在mac/Ios上隐藏元素1并显示元素2,然后在windows上隐藏元素2并显示元素1。我在这里讲得通吗?@James是的,我只是说,你不需要改变每种情况下的可见性,默认情况下,你可以在Mac上拥有你想要的东西,然后你只需要在用户在Windows上时才需要改变它们。如果你想显式地设置它们,那很好,但是不需要。谢谢,我明白你的意思,所以你是说只要我的css中有#下载{display:none;},上面的脚本就会在windows机器上覆盖它,并隐藏#注册并显示#下载?@James确切地说。这里有一个(非常简单)的jsFiddle来演示我所说的:谢谢@metadept我使用了上面的代码并在windows机器上进行了测试,但仍然得到了register div而不是下载?