javascript - 不同事件方法的代码重用

标签 javascript jquery reusability

我的项目的两个不同功能中有两段相似的代码 我想摆脱重复的代码。我怎样才能做到这一点?

1:

getArray("my-hand").forEach(function(elem){
    $(elem).mouseover(function(){
        $(this).css({'top': '1em'});
    });
    $(elem).mouseout(function(){
        $(this).css({'top': '0em'});
    });
    $(elem).click(function(){   
        var cardNode = $(this).get(0);
        //some jquery animation
        play(cardNode,time);
    });
})

和第二 block

2:

getArray("my-hand").forEach(function(elem){
    $(elem).mouseover(function(){
        $(this).css({'top': '1em'});
    });
    $(elem).mouseout(function(){
        $(this).css({'top': '0em'});
    });
    $(elem).click(function(){   
        var cardNode = $(this).get(0);
        //a function with another jquery animation
        validateCardAndAddForCollection(checkNumber,cardNode,time);
    });
})

最佳答案

一种方法是将其放入函数中,并将执行所需代码的回调作为参数传递给该函数:

function handleCards (cb) {
    getArray("my-hand").forEach(function(elem){
        $(elem).mouseover(function(){
            $(this).css({'top': '1em'});
        });
        $(elem).mouseout(function(){
            $(this).css({'top': '0em'});
        });
        $(elem).click(function(){   
            var cardNode = $(this).get(0);
            //some jquery animation

            cb(cardNode);
        });
    });
}

handleCards(function (cardNode) {
    play(cardNode, time);
});

handleCards(function (cardNode) {
    validateCardAndAddForCollection(checkNumber,cardNode,time);
});

关于javascript - 不同事件方法的代码重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34145361/

相关文章:

c++ - 使开关繁重的功能更具可重用性

javascript - 在滚动点上使侧边栏淡入

JavaScript 不返回 CSS 设置字体大小

javascript - 在 HTML 中设置高度属性的流体图像

javascript - 错误: Cannot read property 'split' of undefined

jsf - 如何在参数中使用ui:include?

Java:如何提供唯一的 ID 并重用它们?

javascript - Django 身份验证 : CSRF Failed

javascript - 如何将列表项移动到第一个位置然后再返回?

javascript - 我可以在这个例子中立即调用我的函数而不是用匿名函数包装它吗?