jQuery:如何在两个不同的事件上绑定(bind)相同的操作?

标签 jquery

我发现自己编写的代码看起来像这样:

$(document).ready(function(){

    updateStuff();

    $('select').change(function(){
        updateStuff();
    });
});

function updateStuff(){
    //do something simple
}

同一个函数 updateStuff() 被调用两次(每个事件一次),但两个事件之间没有任何不同。我想知道是否有更好的方法来编写此代码,以便在两个事件上调用相同的代码,并且我可以使我的代码更加干燥。这样,我就不需要首先创建这个函数。

也许是这样的(如果存在这样的语法)?

$('select').bind(['document.ready', 'change'], function(){
    //do something simple
});

最佳答案

您需要将更改事件绑定(bind)在就绪处理程序内,以便保证在进行绑定(bind)时 DOM 已准备好进行操作。你正在以我能想到的几乎最简单的方式来做这件事。我会更改您的代码以绑定(bind)您的更改事件,如下所示:

$('select').change(updateStuff);

除非您需要传入参数,否则无需将对 updateStuff() 的调用包装在匿名函数中。

正如 jAndy 指出的,您还可以通过使用 jQuery 手动调用事件处理程序来调用已绑定(bind)为事件处理程序的函数,如下所示:

$('select').change(updateStuff).change();

您还可以使用速记就绪绑定(bind),因此您的代码将被简化为:

$(function(){
    $('select').change(updateStuff).change();
});

function updateStuff(){
    //do something simple
}

但是,如果您想同时绑定(bind)其他事件(除了就绪事件),您可以这样做:

$('select').bind('change click', updateStuff);

看看 documentation for .bind() here

关于jQuery:如何在两个不同的事件上绑定(bind)相同的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5956932/

相关文章:

javascript - MasterPage ASP.Net 和 Jquery 关于 css 类的点击问题

jquery - <link> 上的 attr() 没有生效

javascript - 不同的div类js选择器

javascript - 将属性的内容转换为函数并执行

javascript - 如何从已分割的div中获取数据

ajax php中通过id动态的Javascript

javascript - 如何使用 jquery 预加载幻灯片的多个但不是所有图像

javascript - 使用 amCharts 格式化 labelText

Javascript 小书签 : how to autofill a field with current page url?

jQuery 事件委托(delegate) + 子目标帮助