2013-10-07 2 views
0

Если вы кэшировать вар:Когда кеширование vars, что лучший способ назвать это?

var something = $('#something'); 

Я видел, что используется позже:

$(something).doAction(); 
something.doAction(); 

Есть ли разница в использовании либо? Я начал использовать something.doAction(), поскольку он выглядит чище и легче читать. Но я хотел бы знать, могут ли это вызвать какие-либо проблемы?

+1

Бывший избыточна. последнее - это все, что вам нужно. –

+1

Вы понимаете каждую из этих трех строк? Как вы думаете, что произойдет? – SLaks

+0

'$ (что-то)' равно '$ ($ ('#something'))'. – JJJ

ответ

5

$(...) возвращает объект jQuery.

Если вы поместите объект jQuery в переменную, переменная по-прежнему будет содержать объект jQuery в нем, когда вы проверите его позже, так же как и все остальное, которое вы можете поместить в переменную.

Никаких магических гремлинов не придет и не будет избавлен от объекта jQuery за вашей спиной.
(если вы случайно не поставили что-то еще в переменной в другом месте)

+0

Вы должны объяснить, что особенного в объектах jQuery, чтобы, если вы поместили их в переменную, переменная все еще удерживает этот объект позже. – djechlin

+1

Ключевым моментом является то, что в объектах jQuery есть * ничего особенного. –

0

Существует только объект jquery, чтобы использовать его позже или избежать повторения.

var $button = $('#button'); 

$button.click(function(){ 
//some code here 
}); 

//now applying some style to it 
$button.css({color:"#ccc",background:"#333"}); 

Или можно заменить

var $button = $('#button').css({color:"#ccc",background:"#333"}); 

$button.click(function(){ 
//some code here 
}); 

Или

$('#button').css({color:"#ccc",background:"#333"}).click(function(){ 
//some code here 
});; 

Update:

Иногда, если вы посмотрите на кнопку, JQuery вернет вам кнопку, а не объект, чтобы отредактировать или выполнить какое-либо действие, передав его как аргумент конструктору jquery.

Here a little example. Вы просто ищете кнопку, а jquery возвращает эту кнопку, но если вам нужно применить какой-либо стиль, событие и т. Д. И т. Д., Вам нужно передать его в качестве аргумента в jquery contructor ($ or jQuery). And here another without the constructor that does not work

+0

Вы не объясняете, почему это работает. – SLaks

+0

Я сказал, что удерживает объект запроса, но нормально. Я объясню лучше – Misters

+0

Я тоже видел этот тип var, кнопка $ in $ делает что-нибудь? Или это просто, чтобы упростить чтение и использование позже (вы знаете, что это объект jquery, хранящийся в var) – user2413333

1

Это не имеет никакого отношения к jQuery. Это всего лишь фундаментальное значение Javascript.

var x = foo(); 
x.something(); 

, конечно же, как foo().something(). Переходите к учебному программированию или Javascript, пока это не имеет смысла.

+1

В частности, '$()' ничем не отличается от любой другой функции. – SLaks

0

something является объектом JQuery и нет необходимости ставить его в скобки со знаком доллара, как это: $(something)

JQuery селекторы возвращают объекты JQuery, что дело здесь $('#something').

Хорошая практика именования заключается в том, чтобы назвать что-то как что-то, так что вы знаете, что переменная содержит объект jQuery.

Также хорошо использовать, например $ (..), будет оборачивать HTML в виде строки, чтобы получить объект JQuery, как это:

$divObject = $('<div>Some text</div>'); 
$divObject.text(); // value is 'Some text' 
Смежные вопросы