2016-12-10 2 views
-2

Привет, ребята, мне интересно, почему знак $ должен быть перед функцией для работы proram. Я console.log ($) и, как я думал, это объект селектора jQuery. Но не понимаю, почему это должно быть там. Пожалуйста помоги!!Синтаксис JavaScript/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(); 
       } 
      }); 
     }); 
+0

'$ (function (...) {...})' эквивалентно '$ (document) .ready (function (...) {...})' ... – Li357

+0

Действительно .. .. Интересно .. Спасибо brotha! –

+0

'' 'не только для выбора элементов DOM, он имеет много функций в зависимости от того, что вы передаете ему. Это конструктор объекта jQuery, хотя он имеет и другие функции. – Li357

ответ

0

Правила именования переменных Javascript позволяют использовать знак $ $ в качестве допустимого имени переменной. Поэтому он действует как сокращенная версия, и jQuery использует ее.

Пример:

var a = 10; 
console.log(a); 

можно также записать

var $ = 10; 
console.log($); 

что делает Jquery является:

jQuery = {}; 
$ = jQuery; 

так же объект JQuery можно получить доступ через "$" переменной, а также , Это действует как сокращенная версия. Если есть две библиотеки, которые пытаются использовать глобальный «$» в качестве своего объекта, это создает конфликт.

Теперь функция, которую мы передаем внутри $(), является всего лишь обратным вызовом. jQuery хочет знать, какой код вы хотите запустить на готовом документе. Таким образом, он принимает функцию в качестве аргумента.

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 регистрирует эту функцию автоматически. Следовательно, этот обратный вызов выполняется в готовом событии.

+0

Это не то, что задает вопрос. Он спрашивает, почему '$ (function() {...})' есть - что это за функция – Li357

+1

В вопросе явно не было сказано, что хотя ... – Sandeep

+0

@AndrewLi, пожалуйста, не паникуйте. Всегда есть возможность редактировать ответ. – Sandeep

Смежные вопросы