2012-10-07 30 views
3

当我的网站在桌面大小的显示器上时,我想要加载的其他jQuery脚本不会在移动大小的显示器上加载。什么是Jquery的媒体查询equivilent

CSS具有媒体查询功能,可以根据浏览器大小轻松加载CSS文件。 Jquery有没有相当于这个?



背景研究:

这里有一些解决方案,我发现每个的缺点。

解决方案1:Enquire.js - 这应该是媒体查询相当于为Javascript(我认为)。但是,文档不是很清楚(至少对于初学者来说)。

例如,this tutorial给出了下面的例子:

enquire.register("max-width: 960px", function() { 
    // put your code here 
}); 

但是,如果您复制并粘贴jQuery代码,它说,没有任何反应!我想你可能需要链接到你的Jquery文件,但是文档没有解释如何做到这一点!

解决方案2:Use Window Resize - 您可以使用$(window).resize触发脚本。但是,只有用户重新调整浏览器的大小时才能使用。这对于窗口始终最大化的桌面用户来说并不好。

还有一个问题是每次浏览器重新调整大小时都会加载脚本。这可能是某些脚本的问题(请参阅示例here,如果该窗口调整了几次大小,false/true字样将无限重复)。

解决方案3:Set a hidden 100% width DIV and then run a script that checks it's width - 这样做的缺点是,它只能运行在第一次加载页面,所以它不适合谁改变了他们的窗口(或设备的方向)的大小的用户。 You can run a timer so it checks宽度每1秒,但这似乎不是很有效。

有谁知道有效的解决方案吗?

谢谢。

PS。这个问题是关于Jquery的媒体查询等效。这不是试图在JavaScript中重新创建CSS媒体查询(即,它不是使用Jquery为不同的窗口大小加载不同的CSS文件,这是通过css3-mediaqueries-js实现的)。

+0

查询应该为你工作。你可以在一个演示页面失败吗? – Bergi

+0

与enquire.js同上,这是您应该关注的解决方案。 – justinavery

+0

好主意。我发布了关于如何使用Enquire.js的单独问题:http://stackoverflow.com/questions/12777622/how-to-use-enquire-js感谢您的帮助! –

回答

0

虽然它不是专门针对jQuery的,但我已经在Paul Irish的Modernizr库中取得了很高的成功。一个简单的方法允许您使用与在CSS中相同的语法来测试媒体查询。测试返回true或false。例如:

if (Modernizr.mq('only screen and (max-width: 768px)') == true) { 
    // your code here 
} 

如果浏览器接受来自该规则的CSS,那么函数也会返回true。您可以在Modernizr docs中阅读更多内容。

希望有所帮助。

+0

与jQuery无关 - 不回答具体问题。 – Sparky