首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不处理JQuery事件的JS对象内部回调

问不处理JQuery事件的JS对象内部回调
EN

Stack Overflow用户
提问于 2014-11-13 02:46:49
回答 1查看 155关注 0票数 1

更新:在帮助下,我能够跟踪这个问题。对函数引用执行某些操作的是if(!action)。一旦我删除了“!”,它就成功了。这是我的一个错误,因为我想检查它是否有一个参考在第一。我的新问题是那是怎么回事!操作符对将使其计算为true的函数执行操作,然后更改它导致函数失败的引用(在本例中,未检测到调试器中的错误)?

原件:我创建了一个javascript函数,它封装了一些变量,并在单击JQuery UI对话框按钮时执行回调。下面是函数的javascript:

代码语言:javascript
复制
function LoginControl(parentDiv, usernameInput, passwordInput, action)
{
    var that = this;
    var container = parentDiv;
    var user = usernameInput;
    var password = passwordInput;
    var actions = action;

    that.init = function()
    {
        container.dialog(
            {
                modal:true,
                show:false,
                buttons: {"Login":Login, Cancel:Close }
            }
        );
    };

    var Login = function (evt) {
        if (!actions)
            actions();
    };

    var Close = function()
    {
        container.dialog("close");
        if(!actions)
            actions();
    };

    that.show = function(evt)
    {
        container.dialog("open");
    };
}

问题是在Login/Close函数中,它执行操作函数。当它执行时,调试器会给出这样的警告:“忽略具有LenientThis的get或属性集,因为" this”对象不正确。“该函数未执行。这里是HTML (我省略了外部jquery源文件,但我使用的是JQuery 2.0.3和JQuery UI 1.1.3。我想不出这是怎么回事,一直被它困扰着。我试过使用“调用”、“绑定”和“应用”方法,但都没有效果。请提供帮助和建议。谢谢!

代码语言:javascript
复制
<html>
<head lang="en">
    <script type="text/javascript">
        function onAction()
        {
            alert("Hello!");
        }

        $(document).ready(function() {
            var loginCtrl = new LoginControl($("#login"), $("#username"), $("#pass"), onAction);

            loginCtrl.init();
            loginCtrl.show();
        });
    </script>
</head>
<body>
<div id="login">
    <form>
        <label for="username">User Name:</label> <input type="text" id="username" /><br>
        <label for="pass">Password:</label><input type="password" id="pass" />
    </form>
</div>
</body>
</html>
EN

回答 1

Stack Overflow用户

发布于 2014-11-13 03:23:48

您需要将Login和Close更改为that.Login =和that.Close =。它们目前是函数中的变量,外部不可见。还将buttons: {"Login":Login, Cancel:Close }更改为buttons: {"Login":that.Login, Cancel:that.Close }

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26900506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档