Что означает $ в jQuery? - PullRequest
       2

Что означает $ в jQuery?

1 голос
/ 20 сентября 2011

Я недавно наткнулся на кусок кода.Это выглядит следующим образом:

      var myFeature = {

'config' : { 
    'container' : $('#myFeature')
},

'init' : function(config) { 

    if (config && typeof(config) == 'object') {
        $.extend(myFeature.config, config);
    }

    myFeature.$container = myFeature.config.container;

    myFeature.$sections = myFeature.$container.
        find('ul.sections > li'); 

    myFeature.$section_nav = $('<ul/>').
        attr('id','section_nav').
        prependTo(myFeature.$container);

    myFeature.$item_nav = $('<ul/>').
        attr('id','item_nav').
        insertAfter(myFeature.$section_nav);

    myFeature.$content = $('<div/>').
        attr('id','content').
        insertAfter(myFeature.$item_nav);

    myFeature.buildSectionNav(myFeature.$sections);
    myFeature.$section_nav.find('li:first').click();

    myFeature.$container.find('ul.sections').hide();

    myFeature.initialized = true;

},


'buildSectionNav' : function($sections) {

    $sections.each(function() {

        var $section = $(this);

        $('<li/>').
            text($section.find('h2:first').text()).
            appendTo(myFeature.$section_nav).
            data('section', $section).
            click(myFeature.showSection);
    });

},

'buildItemNav' : function($items) {

    $items.each(function() {
        var $item = $(this);

        $('<li/>').
            text($item.find('h3:first').text()).
            appendTo(myFeature.$item_nav).
            data('item', $item).
            click(myFeature.showContentItem);

    });

},

'showSection' : function() { 

    var $li = $(this);

    myFeature.$item_nav.empty();
    myFeature.$content.empty();

    var $section = $li.data('section');

    $li.addClass('current').
        siblings().removeClass('current');

    var $items = $section.find('ul li');

    myFeature.buildItemNav($items);

    myFeature.$item_nav.find('li:first').click();

},

'showContentItem' : function() {

    var $li = $(this);

    $li.addClass('current').
        siblings().removeClass('current');

    var $item = $li.data('item');

    myFeature.$content.html($item.html());

}

 };

Я знаю, что означает $ ('# myFeature'), $ (this).Но что означает $ li и myFeature. $ Container?Это какой-то тип переменных?Если да, то какова область применения myFeature. $ Container?поскольку он не объявлен с использованием var, является ли он глобальным?

Ответы [ 8 ]

10 голосов
/ 20 сентября 2011

$li и $container - это просто имена переменных, названные так, чтобы программист знал, что они являются расширенными объектами jQuery.

2 голосов
/ 20 сентября 2011

Это просто позволяет легко идентифицировать переменные jQuery из переменных JavaScript.

Например:

var $section = $li.data('section'); //jQuery variable
var num = 2; //JavaScript variable

Может быть полезно, если у вас много кода с переменными JavaScript и jQuery.

Подробнее см. .

2 голосов
/ 20 сентября 2011

При использовании фреймворка, такого как jQuery, часто так, чтобы программист помещал знаки $ перед именем переменной, чтобы он знал, что содержимое является объектом jQuery.

Например, когда вы связываетесобытие клика и внутри функции у вас есть переменная this.Но this относится к элементу dom, а не к объекту jquery.

Так, например, вы можете использовать что-то подобное для распознавания значения переменной:

var $this = $(this);

$this.doSomeJquery();
2 голосов
/ 20 сентября 2011

Нет, это просто имя переменной.
Я делаю то же самое с переменными, которые содержат объекты jquery, чтобы быстро отличить их от других (не jquery) переменных.

2 голосов
/ 20 сентября 2011

это просто общие переменные, $ разрешено быть частью имени переменной, а автору просто нравится называть свои переменные с помощью $ в начале.Что касается контейнера myFeature. $, То это просто свойство объекта myFeature, поэтому это та же область действия myFeature

1 голос
/ 20 сентября 2011

Знак доллара ($) является псевдонимом для "JQuery"

Я имею в виду, что

$(document).ready(function(){



});

похоже на запись:

jQuery(document).ready(function(){



});

Редактировать: IМисс истолковала вопрос, извините.

Да, есть переменные name

0 голосов
/ 20 сентября 2011

Если вы посмотрите на источник JQuery (http://bit.ly/jqsource) - в самом конце, вы увидите:

// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;

Это просто ссылка на window.jQuery.

0 голосов
/ 20 сентября 2011

Я бы сказал, что это просто некое кодовое соглашение, указывающее, что это переменная, содержащая объект Jquery (вместо объекта DOM).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...