JavaScript/jQuery语法

JavaScript/jQuery语法,javascript,jquery,syntax,Javascript,Jquery,Syntax,嗨,伙计们,我想知道为什么$sign必须在程序运行之前。我使用console.log($)并认为它是jQuery选择器对象。但我不明白为什么它需要在那里。请帮忙 $(function(){ console.log($, 'testing') // when the client clicks SEND $('#datasend').click( function() { var message

嗨,伙计们,我想知道为什么$sign必须在程序运行之前。我使用console.log($)并认为它是jQuery选择器对象。但我不明白为什么它需要在那里。请帮忙

$(function(){
            console.log($, 'testing')
            // when the client clicks SEND
            $('#datasend').click( function() {
                var message = $('#data').val();
                $('#data').val('');
                // tell server to execute 'sendchat' and send along one parameter
                socket.emit('sendchat', message);
            });

            // when the client hits ENTER on their keyboard
            $('#data').keypress(function(e) {
                if(e.which == 13) {
                    $(this).blur();
                    $('#datasend').focus().click();
                }
            });
        });

Javascript变量命名规则允许将“$”符号用作有效的变量名。这就是为什么,它充当速记,jQuery使用它

例如:

var a = 10;
console.log(a);
我也会写作

var $ = 10;
console.log($);
jQuery所做的是:

jQuery = {};
$ = jQuery;
所以同样的jQuery对象也可以通过“$”变量访问。它起到速记的作用。如果有两个库试图使用全局“$”作为其对象,则会产生冲突

现在,我们在$()中传递的函数只不过是一个回调。jQuery想知道,您希望在DocumentReady上运行什么代码。因此,它接受函数作为参数。

var $ = function( data){
    if(typeof data == "function" ){
        // jquery registers this callback to ready event automatically
    } else {
       // uses the selector, and returns the elements
    }
}

// so this will be registered to ready event
$( function(){
    alert('hi');
});    

// and this will give us the jQuery object with DOM elements
$( "body" );
现在,如果我们将选择器传递给jQuery(“选择器”),jQuery将立即执行该操作


但是,如果函数作为参数传递,jQuery会自动将该函数注册到就绪事件中。因此,此回调在就绪事件时执行。

$(函数(…){…})
相当于
$(文档)。就绪(函数(…){…})
…真的。。。。有趣的谢谢你,波罗拉<代码>$不仅仅用于选择DOM元素,它还具有许多函数,具体取决于传递给它的内容。这是一个jQuery对象构造函数,尽管它还有其他用途。请检查这一点,这不是问题所要问的。它询问为什么有
$(function(){…})
这个函数是什么is@AndrewLi请不要惊慌。答案总是有编辑的可能。嗯,你的编辑对我来说没有多大意义。这个代码块非常混乱和矛盾。您说过这是一个回调,在文档准备就绪的情况下运行。请证明…@AndrewLi,希望它现在更有意义。您的示例没有在文档就绪的情况下运行。我觉得你把事情复杂化了。jQuery根据传递给“构造函数”的参数类型做不同的事情,但不需要这个示例(它会严重损害解释)