Javascript 从回调函数的外部模拟回调函数内部的事件

Javascript 从回调函数的外部模拟回调函数内部的事件,javascript,oop,events,tinymce,dom-events,Javascript,Oop,Events,Tinymce,Dom Events,在一个给定的事件中,我希望触发一个给定的动作。特别是,我想通过执行tinymce.editors['myID'].hide()。结果表明,此方法仅在setback()回调函数中可用。为什么会这样,我不知道,但比我聪明得多的人说这是真的,正如在 一种方法是在setup()回调函数中添加以下脚本 $('#hide1').click(function(){tinymce.editors['myID'].hide();}); 虽然这会起作用,但我的现实世界示例要复杂一些。事件将以单击开始,然后执行a

在一个给定的事件中,我希望触发一个给定的动作。特别是,我想通过执行
tinymce.editors['myID'].hide()。结果表明,此方法仅在
setback()
回调函数中可用。为什么会这样,我不知道,但比我聪明得多的人说这是真的,正如在

一种方法是在
setup()
回调函数中添加以下脚本

$('#hide1').click(function(){tinymce.editors['myID'].hide();});
虽然这会起作用,但我的现实世界示例要复杂一些。事件将以单击开始,然后执行ajax调用,并基于返回的JSON执行其他一些工作,可能会隐藏编辑器,也可能不会隐藏编辑器。我真的不想在
setup()
和应用程序的其他部分复制所有逻辑/ajax。相反,我希望我可以将逻辑/ajax放在
setup()之外,并使用它以某种方式触发
tinymce.editors['myID'].hide()位于
setup()

我希望这对你有意义,因为这对我来说相当混乱

现场示例:|带代码:


测试
使用设置中直接链接的事件隐藏
通过模拟事件来隐藏
$(函数(){
tinymce.init({
选择器:“#myID”,
设置:功能(e){
$('#hide1')。单击(函数(){tinymce.editors['myID'].hide();});
}
});
$('#hide2')。单击(function(){alert('trigger event,将导致tinymce::setup()中的函数触发。');});
});

没有理由使用
$(function(){})
的末尾。它用于在DOM准备就绪时绑定事件,这与
@Ian结尾时基本相同。我也这么认为,但它似乎导致
设置()
中的
单击()方法出现问题。方法是粘贴
tinymce.editors['myID'].hide()
#hide2
单击功能中,它对我有效。@XGundam05。真奇怪。我想你是对的。当我第一次测试时,我将
tinymce.editors['myID'].hide()直接在主脚本中(即不在单击事件中),并显示
tinymce.editors['myID']未定义。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
        <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /> 
        <title>Testing</title>  
    </head>

    <body>
        <form>
            <textarea id="myID"></textarea>
        </form>
        <button id="hide1">Hide using event linked directly in setup</button>
        <button id="hide2">Hide by mimicing an event</button>
        <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
        <script src="http://tinymce.cachefly.net/4.0/tinymce.min.js"></script>
        <script type="text/javascript"> 
            $(function(){
                tinymce.init({
                    selector: "#myID",
                    setup:    function(e) {
                        $('#hide1').click(function(){tinymce.editors['myID'].hide();});
                    }
                });
                $('#hide2').click(function(){alert('trigger event which will cause function in tinymce::setup() to trigger.');});
            });
        </script>
    </body> 
</html>