首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >压缩Javascript/jQuery代码

压缩Javascript/jQuery代码
EN

Stack Overflow用户
提问于 2012-04-28 08:52:08
回答 4查看 221关注 0票数 0

首先,我想要感谢那些能帮助我压缩这段Javascript/jQuery代码的人。

代码语言:javascript
复制
        jQuery(function() {

            jQuery('#pitem-1').click(function(e) {
                jQuery("#image-1").lightbox_me({centered: true, onLoad: function() {
                    jQuery("#image-1").find("input:first").focus();
                }});

                e.preventDefault();
            });        

            jQuery('#pitem-2').click(function(e) {
                jQuery("#image-2").lightbox_me({centered: true, onLoad: function() {
                    jQuery("#image-2").find("input:first").focus();
                }});

                e.preventDefault();
            });

            jQuery('#pitem-3').click(function(e) {
                jQuery("#image-3").lightbox_me({centered: true, onLoad: function() {
                    jQuery("#image-3").find("input:first").focus();
                }});

                e.preventDefault();
            });

            jQuery('table tr:nth-child(even)').addClass('stripe');
        });

基本上,每个#pitem-ID都会在弹出窗口中打开相同的#image-ID。

再次感谢任何能提供帮助的人。

杰克

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-28 09:06:16

代码语言:javascript
复制
$('[id^="pitem-"]').click(function(e) {
    var numb = this.id.split('-')[1];
    $("#image-"+numb).lightbox_me({centered: true, onLoad: function() {
         $(this).find("input:first").focus();
    }
    });
    e.preventDefault();
});        

$('table tr:nth-child(even)').addClass('stripe');
票数 2
EN

Stack Overflow用户

发布于 2012-04-28 08:58:50

您的函数看起来几乎都一样,这是一个提示,您可能应该将该功能移到可以调用的东西中:

代码语言:javascript
复制
function createHandler(id) {
    return function (e) {
        $(id).lightbox_me({centered: true, onLoad: function() {
            $(id).find("input:first").focus();
        }});

        e.preventDefault();
    }
};

然后,您可以使用:

代码语言:javascript
复制
 $('#pitem-2').bind('click', createHandler("#image-2"));
票数 4
EN

Stack Overflow用户

发布于 2012-04-28 09:22:02

您可以:

  1. 使用通用事件处理程序将多个对象组合到选择器中
  2. 使用this引用触发事件的对象
  3. 从生成事件的对象的ID派生图像id。

这使您可以使用一段代码来处理所有三个对象的操作:

代码语言:javascript
复制
jQuery(function() {
    jQuery("#pitem-1, #pitem-2, #pitem-3").click(function() {
        var image$ = $("#" + this.id.replace("pitem", "image"));
        image$.lighbox_me({centered: true, onLoad: function() {
                    image$.find("input:first").focus();
        }});
        e.preventDefault();
    });
    jQuery('table tr:nth-child(even)').addClass('stripe');
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10359594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档