javascript - 弹出表单不工作 Jquery

标签 javascript jquery

我正在尝试弹出表单。当用户单击“联系我”按钮时,它将显示弹出表单,我正在尝试此代码,我知道某些语法是错误的,请帮助!

我的 HTML

 <div class="col-lg-12">
            <article>
                <h1>First Article</h1>
                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
                tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
                quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
                consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
                cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
                proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
            </article>

            <form id="form">
              <div class="form-group">
                <label>Email address</label>
                <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email">
              </div>
              <div class="form-group">
                <label>Password</label>
                <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
              </div>

              <button type="submit" class="btn btn-default">Submit</button>
            </form>
        </div>

我的 JQUERY

 (function(){

        var object = {

            formToShow:$('#form'),

            showForm: function(){
                $(this).object.formToShow.show();
            }

        };

        $('<button class="btn btn-default">Contact Me</button>').insertAfter('article:first').on('click', object.showForm);

    })();

最佳答案

这里的问题是 $(this).object 未定义,这会导致点击处理程序中出现脚本错误。

处理程序内的

this 引用 dom 元素,而 jQuery 对象 $(this) 没有名为 object 的属性。

一种可能的解决方案是为回调方法使用自定义上下文,以便在调用时 showForm 内的 this 将引用 object实例。

$('<button class="btn btn-default">Contact Me</button>').insertAfter('article:first').on('click', object.showForm.bind(object));
<小时/>

另一种解决方案可能是直接访问闭包变量object,就像

(function () {

    var object = {

        formToShow: $('#form'),

        showForm: function () {
            object.formToShow.show();
        }

    };

    $('<button class="btn btn-default">Contact Me</button>').insertAfter('article:first').on('click', object.showForm);

})();

关于javascript - 弹出表单不工作 Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31398774/

相关文章:

javascript - SocketIO 突发而不是连续传输数据

java - 使用 HTML/JavaScript 创建具有非图像输出的交互式序列图

javascript - 为什么输入 val() 没有实时变化?

javascript - 使所有菜单项动画化

jquery - 如何让 Resharper 停止 Javascript 将 $ 自动补全为 '$t?

javascript - 如何使用 json 进行搜索并以 html 格式在搜索结果中显示选定的元素详细信息?

javascript - 在 Google Chrome for Android 上调用 Javascript Notification API 不能直接从网页工作

Javascript 覆盖而不是警报

javascript - 使用 CSS 类动态显示 select 中的数据

jquery - 嵌套 jQuery Tablesorter 表,全部可排序