Javascript 有没有机会缩小这段代码的大小?

Javascript 有没有机会缩小这段代码的大小?,javascript,jquery,Javascript,Jquery,有没有什么方法可以减少下面代码片段的大小?比如说如果!$'bodypagina_blog_1到bodypagina_blog_10。长度在线javascript迷你工具没有帮助 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#pagi

有没有什么方法可以减少下面代码片段的大小?比如说如果!$'bodypagina_blog_1到bodypagina_blog_10。长度在线javascript迷你工具没有帮助

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
});

这不是真的缩小规模,但是

if ( $('[id^="pagina_blog_"]').length === 0 ) { 
   // do stuff
}
是的,您可以:$'*[id^=pagina\u blog\uz]'


有关更多详细信息,请参阅jquery选择器:

为它们提供一个可供选择的共享类

如果你出于某种原因必须使用ID,我建议

!$('body').is('[id^="pagina_blog_"]')

您不希望将id选择器作为第一个选择器的原因是,这将导致不需要的完整dom扫描。然而,在您的逻辑中,似乎您只关心拥有它的body标记。

如果您知道它是body标记上的一个id,您甚至不需要使用选择器,因为您可以直接获取id字符串,并使用正则表达式将其与任何您想要的内容进行比较。例如,您可以这样做:

if (document.body.id.match(/^pagina_blog_\d+$/)) {
    // code here
}
var num, matches = document.body.id.match(/^pagina_blog_(\d+)$/);
if (matches) {
    num = +matches[1];
    if (num >= 1 && num <= 10) {
        // code here
    }
}
或者,对于末尾的任何一个或两个数字:

if (document.body.id.match(/^pagina_blog_\d{1,2}$/)) {
    // code here
}
或者,如果您想实际查看id后面的数字是否在某个特定的数字范围内,如1-10,可以执行以下操作:

if (document.body.id.match(/^pagina_blog_\d+$/)) {
    // code here
}
var num, matches = document.body.id.match(/^pagina_blog_(\d+)$/);
if (matches) {
    num = +matches[1];
    if (num >= 1 && num <= 10) {
        // code here
    }
}

在选择器中不需要body。你只需要身份证。除此之外,给他们一个共享类,让他们选择并结束一天。你是在问如何手动缩小吗?好的,从来没有想过使用共享类:谢谢,我已经删除了对“缩小”此代码的引用,因为我不相信OP是在问这个问题,在这种情况下这是一个用词不当的问题。我相信他是在试图缩短代码,而不是混淆/减少文件大小。这看起来非常好。它是否适用于id pagina_blog_1、pagina_blog_28765、pagina_blog_sfdgsdf?是-有关更多信息,请参阅答案中提供的链接,虽然使用类会更快。这可能不是很快,因为它必须检查文档中的每个ID,而您只能检查body标记。如果您要使用jQuery选择器,而根本不检查数字,那么为什么不使用:If$'body[ID^=pagina_blog_]'。length?在这种情况下可能没问题。作为一种习惯,我尝试只使用能够直接转换为javascript查找函数的选择器,以避免sizzle做尽可能多的工作。jquery支持室中已经提到,在try.jquery.com页面上也有记录,在选择器中使用某些属性可能会降低性能。使用is使工作发生在sizzle之外,因此它避免了这种情况。也返回一个布尔值。说到直接翻译成Javascript,这就是我在回答中所做的。这里根本没有理由使用jQuery,因为整个问题实际上只是一个已知字符串文档上的字符串匹配。body.id。谢谢!解决方案1非常适合我。