是否可以封装事件逻辑以避免重复代码?

时间:2010-09-23 14:32:04

标签: javascript jquery

假设选中/取消选中复选框时,我希望发生特定行为。

现在,如果我的代码中有多个点,我将复选框设置为选中/取消选中,我必须经历相同的逻辑。

我可以用什么方法封装选中复选框时发生的逻辑,然后重新使用该逻辑?

2 个答案:

答案 0 :(得分:5)

我的猜测是,您目前正在绑定点击事件处理程序,如下所示:

$('some-selector').click(function (event)
{
    // do fancy stuff here
});

要封装该逻辑,您只需要使用匿名函数切换到可以重用的函数,如下所示:

function handleClicks(event)
{
    // do fancy stuff here
}

$('some-selector').click(handleClicks);
$('some-other-selector').click(handleClicks);

怎么样?


我可能还会猜测你正在编写和重写的逻辑是将“check-all”类型的复选框连接到一组复选框。我最近写了一个jQuery插件来处理这类事情。

我从来没有把它正确地上传到GitHub - here's the gist。如果您想真正使用它,请告诉我,我可以解释它的用法 - 它非常简单。

答案 1 :(得分:0)

只是扩展'熊会吃掉你'所说的使用非匿名函数,你应该把你自己的函数库集成到jquery:

像这样创建你的功能

$.fn.handleClicks = function (){
    $(this).click(function(event){
        alert('Click');
        return false
    })
}

然后你就可以像这样使用它们,让事情变得更整洁,代码也更少。 IMO;

$('a').handleClicks();    ​