Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何立即触发事件?_Javascript_Prototypejs - Fatal编程技术网

Javascript 如何立即触发事件?

Javascript 如何立即触发事件?,javascript,prototypejs,Javascript,Prototypejs,我正在使用prototype js绑定这样的事件: $('country').observe('change',function(e) { ... }); 我怎么能马上发射一次呢 在jQuery中,我只添加了一个.triggerHandler('change')。原型中是否有类似的内容?使用load事件。大概是这样的: // calls addListeners when the document loads Event.observe(window, 'load', addListeners

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

$('country').observe('change',function(e) { ... });
我怎么能马上发射一次呢


在jQuery中,我只添加了一个
.triggerHandler('change')
。原型中是否有类似的内容?

使用
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()
。我一直在使用这种技术。

使用
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()
。我一直在使用这种技术。

如果使用扩展是一种选择,那么我过去在这方面已经取得了成功

它将允许您执行以下操作:

$('country').simulate('change');

如果使用扩展是一种选择,那么我过去在这方面已经取得了成功

它将允许您执行以下操作:

$('country').simulate('change');
试试这个:

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

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


但是,在这两种情况下,您都不能像预期的那样使用
。此解决方案更适合于更一般的回调,例如对于
setInterval

尝试以下方法:

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

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



但是,在这两种情况下,您都不能像预期的那样使用
。此解决方案更适合于更一般的回调,例如对于
setInterval

…如果您知道它存在,并且您知道您没有等待pageload或等待脚本加载,为什么不:

(function (el) {
    if (!el) { return; }
    doSomething(el);
}(document.getElementById("country")));

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

(function (el) {
    if (!el) { return; }
    doSomething(el);
}(document.getElementById("country")));

你说立即是什么意思?一旦页面加载?@noahpasalacqua:不,马上。如中所示,当该行代码被命中时。它在HTML元素下面,所以我知道它已经存在了。你说的立即是什么意思?一旦页面加载?@noahpasalacqua:不,马上。如中所示,当该行代码被命中时。它在HTML元素的下面,所以我知道它已经存在。这将触发它一次,而且只会触发一次。更改事件在哪里?@Mark稍后添加它——或者将此调用包含在函数定义中。您需要做两件事:1)初始化代码并附加一个侦听器。2) 处理后续的更改,以便以这种方式处理。即使这意味着定义一个
handleChange
函数,然后在对象上附加一个
change
侦听器,然后第一次使用我写的模式自动调用
handleChange
功能。这样,您就不必费劲地试图将初始化处理硬塞进通用侦听器,反之亦然。这将触发它一次且仅一次..更改事件在哪里?@Mark随后添加它--或者将此调用包含在您的函数定义中。您需要做两件事:1)初始化代码并附加一个侦听器。2) 处理后续的更改,以便以这种方式处理。即使这意味着定义一个
handleChange
函数,然后在对象上附加一个
change
侦听器,然后第一次使用我写的模式自动调用
handleChange
功能。那么你就不必费劲地试图将初始化处理强加给你的泛型侦听器,反之亦然<代码>参数。被调用方已被弃用,不是吗?我目前正在使用前一种方法<代码>参数。被调用方已被弃用,不是吗?