jQuery - 如何在另一个范围内调用函数

时间:2015-05-24 03:54:58

标签: javascript jquery

我正在使用此:http://terminal.jcubic.pl/

我想输出一些内容,并将输出作为一个超链接,点击后会输出其他内容。

    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: '> '
        });
    });

然而,

<a onClick="javascript:terminal.exec

不起作用,因为未在窗口上下文中定义terminal.exec。这样做的正确方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以在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(); });

或者你可以通过将terminal变量附加到全局window对象来犯罪并公开它:

window.terminal = terminal;

以下是与您的代码内联的两条建议:

// 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: '> '
    });
});

答案 1 :(得分:0)

变量无法访问。还要注意终端是$(&#39;#terminal&#34;)

的属性

解决方案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: '> '
    });
});

解决方案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: '> '
    });
});

在飞行中写道,我希望它是正确的。但这个想法就在那里。