Javascript jQuery-如何在另一个作用域中调用函数

Javascript jQuery-如何在另一个作用域中调用函数,javascript,jquery,Javascript,Jquery,我用这个: 我想输出一些东西,并且让输出成为一个超链接,当点击它时会输出其他东西 jQuery(document).ready(function($) { $('#terminal').terminal(function(cmd, term) { term.echo('\nClick this: <a onClick="javascript:terminal.exec(\'somethingelse\')">somethingelse

我用这个:

我想输出一些东西,并且让输出成为一个超链接,当点击它时会输出其他东西

    jQuery(document).ready(function($) {
        $('#terminal').terminal(function(cmd, term) {
             term.echo('\nClick this: <a onClick="javascript:terminal.exec(\'somethingelse\')">somethingelse</a>', {raw: true});
        }, {
            greetings: "Welcome!\n",

            onInit: function(terminal) {
                terminal.echo('Welcome!');
            },
            prompt: '> '
        });
    });
jQuery(文档).ready(函数($){
$('#terminal').terminal(函数(cmd,term){
echo('\n单击this:somethingelse',{raw:true});
}, {
问候语:“欢迎!\n”,
onInit:功能(终端){
terminal.echo('Welcome!');
},
提示:'>'
});
});
但是,

<a onClick="javascript:terminal.exec

您可以在JavaScript中定义
onclick
处理程序:

<!-- In your HTML -->
<a class="trigger-terminal" href="#">Terminal</a>

// In your JavaScript in the scope of terminal
$('.trigger-terminal').click(function() { terminal.exec(); });
以下是与您的代码内联的两个建议:

// First suggestion

jQuery(document).ready(function($) {
    $('#terminal').terminal(function(cmd, term) {
         term.echo('\nClick this: <a onClick="javascript:terminal.exec(\'somethingelse\')">somethingelse</a>', {raw: true});
    }, {
        greetings: "Welcome!\n",

        onInit: function(terminal) {
            $('.trigger-terminal').click(function() { terminal.exec(); });

            terminal.echo('Welcome!');
        },
        prompt: '> '
    });

// Second suggestion

jQuery(document).ready(function($) {
    $('#terminal').terminal(function(cmd, term) {
         term.echo('\nClick this: <a onClick="javascript:terminal.exec(\'somethingelse\')">somethingelse</a>', {raw: true});
    }, {
        greetings: "Welcome!\n",

        onInit: function(terminal) {
            window.terminal = terminal;
            terminal.echo('Welcome!');
        },
        prompt: '> '
    });
});
//第一个建议
jQuery(文档).ready(函数($){
$('#terminal').terminal(函数(cmd,term){
echo('\n单击this:somethingelse',{raw:true});
}, {
问候语:“欢迎!\n”,
onInit:功能(终端){
$('.trigger terminal')。单击(函数(){terminal.exec();});
terminal.echo('Welcome!');
},
提示:'>'
});
//第二项建议
jQuery(文档).ready(函数($){
$('#terminal').terminal(函数(cmd,term){
echo('\n单击this:somethingelse',{raw:true});
}, {
问候语:“欢迎!\n”,
onInit:功能(终端){
window.terminal=终端;
terminal.echo('Welcome!');
},
提示:'>'
});
});

无法访问变量。还要注意终端是$(“#终端”)的属性

解决方案1

jQuery(document).ready(function($) {
    $('#terminal').terminal(function(cmd, term) {
         term.echo('\nClick this: '+$('<a></a>').text('somethingelse').on('click', function(){$('#terminal').terminal.exec();}), {raw: true});
    }, {
        greetings: "Welcome!\n",

        onInit: function(terminal) {
            terminal.echo('Welcome!');
        },
        prompt: '> '
    });
});
jQuery(文档).ready(函数($){
$('#terminal').terminal(函数(cmd,term){
term.echo('\n单击此:'+$('').text('somethingelse')。在('click',function(){$('.#terminal').terminal.exec();})上,{raw:true});
}, {
问候语:“欢迎!\n”,
onInit:功能(终端){
terminal.echo('Welcome!');
},
提示:'>'
});
});
解决方案2

jQuery(document).ready(function($) {
    $('#terminal').terminal(function(cmd, term) {
         term.echo('\nClick this: <a onClick="javascript:$("#terminal").terminal.exec(\'somethingelse\')">somethingelse</a>', {raw: true});
    }, {
        greetings: "Welcome!\n",

        onInit: function(terminal) {
            terminal.echo('Welcome!');
        },
        prompt: '> '
    });
});
jQuery(文档).ready(函数($){
$('#terminal').terminal(函数(cmd,term){
echo('\n单击this:somethingelse',{raw:true});
}, {
问候语:“欢迎!\n”,
onInit:功能(终端){
terminal.echo('Welcome!');
},
提示:'>'
});
});

动态编写,我希望它是正确的。但是想法就在那里。

用JavaScript而不是内联HTML处理
onclick
,并在代码中定义函数的地方定义它。它都在该函数中:
$('#terminal')。terminal(函数(cmd,term){
那该如何工作呢?这两个似乎都没有任何作用。没有任何错误。更新在您提供的代码中嵌入了解决方案。
terminal
$(“#terminal”);
的属性,它本身不作为引用存在。即:
$(#terminal')。terminal
现在工作了。谢谢。)正因为如此,这个签名
$('#terminal').terminal(函数(cmd,term){
也许您应该使用term而不是terminal,但这与您的库文档有关,对吗?
jQuery(document).ready(function($) {
    $('#terminal').terminal(function(cmd, term) {
         term.echo('\nClick this: <a onClick="javascript:$("#terminal").terminal.exec(\'somethingelse\')">somethingelse</a>', {raw: true});
    }, {
        greetings: "Welcome!\n",

        onInit: function(terminal) {
            terminal.echo('Welcome!');
        },
        prompt: '> '
    });
});