我有什么方法可以减少下面代码片段的大小?像if (!$('body#pagina_blog_1
到body#pagina_blog_10).length)
这样的在线javascript minifier工具无济于事。
jQuery(function($){
if (!$('body#pagina_blog_1, body#pagina_blog_2, body#pagina_blog_3, body#pagina_blog_4, body#pagina_blog_5, body#pagina_blog_6, body#pagina_blog_7, body#pagina_blog_8, body#pagina_blog_9, body#pagina_blog_10').length)
return;
// do stuff
});
答案 0 :(得分:2)
是的,你可以:$('*[id^="pagina_blog_"]')
有关更多详细信息,请参阅jquery选择器:http://api.jquery.com/attribute-starts-with-selector/
答案 1 :(得分:1)
这不是真正的缩小,但只是
if ( $('[id^="pagina_blog_"]').length === 0 ) {
// do stuff
}
答案 2 :(得分:1)
给他们一个共享的课程来选择。
如果您出于某种原因必须使用ID,我建议......
!$('body').is('[id^="pagina_blog_"]')
您不希望将id选择器作为第一个选择器的原因是这将导致完整的dom扫描,这是不希望的。但是在你的逻辑中,你看起来只关心身体标签了。
答案 3 :(得分:1)
如果您知道它是body标签上的id,您甚至不需要使用选择器,因为您可以直接获取id字符串并将其与使用正则表达式所需的任何内容进行比较。例如,您可以这样做:
if (document.body.id.match(/^pagina_blog_\d+$/)) {
// code here
}
或者,对于最后的任何一个或两个数字:
if (document.body.id.match(/^pagina_blog_\d{1,2}$/)) {
// code here
}
或者,如果你想真正看到id之后的数字是否在某个特定的数字范围内,例如1-10,你可以这样做:
var num, matches = document.body.id.match(/^pagina_blog_(\d+)$/);
if (matches) {
num = +matches[1];
if (num >= 1 && num <= 10) {
// code here
}
}