【问题标题】:Why are these Element.observe 'ajax:events' firing immediately? - Prototype为什么这些 Element.observe 'ajax:events' 会立即触发? - 原型
【发布时间】:2011-05-16 10:39:24
【问题描述】:

我有一个 form_element,我想更改它发布时的样式。

我像这样更改了已经工作的代码:

form_element.observe("ajax:before", function(){ /*do stuff*/ });

到这里:

form_element.observe("ajax:before", changeFormToPostingStyle(form_element));

由于某种原因,第二个在页面加载时立即触发 - 这与事件无关。我尝试更改事件 ajax:complete/success/whatever 但它仍然过早地触发。有什么想法吗?

【问题讨论】:

    标签: javascript ajax events prototypejs dom-events


    【解决方案1】:

    它在语句的时候触发,因为

    changeFormToPostingStyle(form_element)
    

    是对函数的调用,并且观察者期望它成为函数或对返回函数的函数的调用。改成

    form_element.observe("ajax:before", function() { changeFormToPostingStyle(this) });
    

    form_element.observe("ajax:before", changeFormToPostingStyle);
    

    并在该函数中使用this

    【讨论】:

    • 不是“观察者”而是Element.observe。但是,您应该将函数作为对象传递是对的。
    • 感谢您的编辑。现在看来我的评论是在谈论你没有做过的事情!
    • 感谢您的回答!因此,如果我想清除观察者,我可以这样做: form_element.stopObserving("ajax:before", changeFormToPostingStyle); ?
    猜你喜欢
    • 1970-01-01
    • 2017-02-20
    • 2014-03-23
    • 2019-03-07
    • 2013-06-23
    • 2016-06-11
    • 2021-10-22
    • 2023-04-11
    • 1970-01-01
    相关资源
    最近更新 更多