jQuery:在事件处理程序声明上调用一次函数

时间:2013-11-08 11:00:39

标签: jquery

jQuery('select').on('change EVENT_I_AM_LOOKING_FOR', function() {
    var select_box = jQuery(this);
    var id = select_box.data('id');
    var details = jQuery('#details_' + id);
    if(select_box.val()) {
        details.show();
    } else {
        details.hide();
    }
});
-------------------------------------------
jQuery('select').triggerHandler('change');
// or name the anonymous function and invoke it immediately

是否有类似"加载"的事件(不起作用)或者在声明之后立即运行该函数以将代码保存在线下?或者是否有另一种立即调用anon函数的方法?

没有改变生活,但我总是想知道我什么时候写这样的代码。

2 个答案:

答案 0 :(得分:2)

不,但你可以链接:

jQuery('select').on('change', function(e){ ... }).trigger('change');

答案 1 :(得分:0)

现在,您在创建处理程序后立即触发事件的方法是一种很好的模式。另一种方法是为处理程序声明一个函数并立即调用它。像这样:

var myFunction = function() {
    var select_box = jQuery(this);
    var id = select_box.data('id');
    var details = jQuery('#details_' + id);
    if (select_box.val()) {
        details.show();
    } 
    else {
        details.hide();
    }
}

jQuery('select').on('change EVENT_I_AM_LOOKING_FOR', myFunction);
$.proxy(myFunction, $('select'))();

注意我在这里使用了$.proxy,因为您的函数依赖于导致事件的select的范围。