jQuery:使用一个匿名函数绑定到ready事件和另一个事件

时间:2013-10-16 17:36:07

标签: javascript jquery javascript-events anonymous-function ready

通常,要将多个事件绑定到一个元素,可以使用.on()

$("select#id").on("click change").function(){
    // do actions
});

但是,自jQuery 1.8起,ready.on()的使用已被弃用:

// Deprecated
$(document).on("ready", handler)

.on("ready")的行为也与.ready()不同。具体来说,如果.on("ready")在元素准备好后绑定到元素,处理程序将不会执行,而.ready()即使在元素准备好后调用也会执行。

您可以使用命名函数完成它:

var myFunction = function(){
    // do actions
};

$(document).ready(myFunction);
$("select#id").change(myFunction);

但这不太理想。使用单个匿名函数会更清晰。

2 个答案:

答案 0 :(得分:0)

一种方法是:

$(document).ready(function(){
    $("select#id").change(function(){
        // do actions
    }).change();
});

这将定义change事件的处理程序,然后立即调用change事件。因为它位于ready()处理程序内部,所以它将针对readychange事件执行。

答案 1 :(得分:0)

抱歉,您无法在更新版本的jquery中执行此操作。

您的代码实际上没有任何意义,当您使用document时,没有理由在$()内使用.ready以外的任何内容,因为{{ 1}}将简单地忽略当前选择的任何内容并执行它的操作,就好像选择了.ready一样。

document

如果唯一的目标是仅使用1个匿名函数,事件委托将执行此操作,但它可能有点过分。

$(document).ready(function(){
    $("#theid").change(changeHandler).change();
});

其中,处理程序是匿名函数或命名函数,您可以选择。