有没有机会减少这段代码的大小?

时间:2016-01-03 18:10:57

标签: javascript jquery

我有什么方法可以减少下面代码片段的大小?像if (!$('body#pagina_blog_1body#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
});

4 个答案:

答案 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
    }
}