Как насчет того, чтобы вообще не объявлять переменные ... :)
$('.myfilter').focus(function() {
if ( this.value.length === 0 ) {
dosomething();
}
}).blur(function(length) {
if ( this.value.length === 0 ) {
dowhatever();
}
});
Кроме того, это:
$('.myfilter').bind('focus blur', function(e) {
if ( this.value.length === 0 ) {
e.type === 'focus' ? dosomething() : dowhatever();
}
});
Использование переменных
Обычно вы хотите использовать переменную, если вам нужно использовать определенное значение несколько раз.Однако в этом случае вам нужно значение this.value.length
только один раз (в заголовке if).Таким образом, вы можете напрямую ввести это значение в заголовок if.
$ (this) против this
Чтобы понять, когда использовать какой, вам нужнопонять разницу между объектом-элементом DOM и объектом jQuery.Объект jQuery - это объект-оболочка, который содержит ноль или более объектов элемента DOM (например, массив).Важно понимать, что методы jQuery (например, .addClass()
) можно вызывать только для объектов jQuery, но не для элементов DOM напрямую.
Внутри функций обработчика событий значение this
относится к элементу DOM, в которомсобытие произошлоТеперь, если вы хотите вызвать методы jQuery для этого элемента DOM, вам нужно обернуть этот элемент DOM внутри объекта jQuery - для этого нужно написать $(this)
.
$(this).addClass('selected'); // works fine
this.addClass('selected'); // throws Error