1
$(document).ready(function(){       
        $('html').addClass('js');
        var contactForm = {
            init: function(){
                $('<button></button>',{
                    text: 'contact me'
                }).appendTo('article')
                **.on('click', this.show);**
            }, 

            show: function(){
                console.log('show is clicked');
            }
        }

        contactForm.init();
    });

在 onClick 调用中,为什么在.on('click', this.show());加载 dom 时立即执行 get ,而稍后 get 仅在单击按钮时发生。

4

2 回答 2

4

最后的括号表示应该立即调用前面的函数。没有括号,它将成为对函数的引用。

因此on('click', this.show());将意味着在设置处理程序show时在加载时调用该click函数,并将其返回值设置为事件处理程序。

ason('click', this.show);为单击处理程序提供对函数的引用,该show函数将在click事件发生时调用。

最佳实践是将函数的引用传递给事件处理程序 - 即。后一个例子。

于 2013-08-18T13:31:08.203 回答
3

'on()' 是一个(在这种情况下)接受两个参数的函数。

this.show传递对名为 的函数的引用show

this.show()调用函数并传递返回值。

于 2013-08-18T13:32:52.277 回答