0

我正在使用原型js绑定这样的事件:

$('country').observe('change',function(e) { ... });

我怎样才能立即触发它?

在 jQuery 中,我会添加一个.triggerHandler('change'). 原型中有类似的东西吗?

4

4 回答 4

1

使用load事件。像这样的东西:

// calls addListeners when the document loads
Event.observe(window, 'load', addListeners, false); 

function addListeners() {   

    // called onLoad
    fireOnce();

    // observer for the country dropdown
    $('country').observe('change', function(event) {
        fireOnChange();
    });
}

function fireOnce() {
    // do something
}

function fireOnChange() {
    // do something
}

当文件加载时,fireOnce()将执行。我一直使用这种技术。

于 2012-08-05T18:41:58.973 回答
1

如果使用扩展是一种选择,我过去曾为此目的使用event.simulate取得了成功。

它允许您执行以下操作:

$('country').simulate('change');
于 2012-08-05T19:33:14.883 回答
1

尝试这个:

var handler = function(e) {...};
$("country").observe("change",handler);
handler();

或者(可读性较差,避免临时变量):

$("country").observe("change",(function(e) { ... return arguments.callee;})());

但是,在这两种情况下,您都无法按this预期使用。此解决方案更适合更通用的回调,例如 forsetInterval

于 2012-08-05T19:34:44.323 回答
0

...如果您知道它存在,并且您知道您不是在等待页面加载或等待脚本加载,为什么不只是:

(function (el) {
    if (!el) { return; }
    doSomething(el);
}(document.getElementById("country")));
于 2012-08-05T19:36:46.250 回答