Почему код не срабатывает, хотя он написан с соблюдением разных стандартов (ECMAScript) ? Вот код:
$('.tab').click( function () {
$('.tab').css({
'color': 'gray',
'border': '1px solid #ececec'
});
$(this).css({
'color': '#000',
'border': '1px solid orange'
})
} );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="tab">1</div>
<div class="tab">2</div>
<div class="tab">3</div>
<div class="tab">4</div>
<div class="tab">5</div>
<div class="tab">6</div>
А этот не срабатывает ...
$('.tab').click( ()=>{
$('.tab').css({
'color': 'gray',
'border': '1px solid #ececec'
});
$(this).css({
'color': '#000',
'border': '1px solid orange'
})
} );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="tab">1</div>
<div class="tab">2</div>
<div class="tab">3</div>
<div class="tab">4</div>
<div class="tab">5</div>
<div class="tab">6</div>
Потому что стрелочная функция не имеет своего this
-а.
// 1.
$('.tab').click( ()=>{
...
$(this).css({ // !!! this здесь тот же, что и в строчке 1.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
Главная особенность стрелочных функций не их краткость, а то что у них нет контекста, то есть this
не установлен на $('.tab')
:
$('.tab').click( function(){console.log(this);} ); // Html элемент
$('.tab').click( () => {console.log(this);} ); // Window
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="tab">Click</div>
Виртуальный выделенный сервер (VDS) становится отличным выбором
Нужно выводить рандомно данные с сайта https://randomuserme/ , но что-то пошло не так, на ютубе смотрел как это делают, но у меня ругается консоль
Добрый вечер уважаемые программисты! Помогите плиз разобраться с input preventDefaultЕсть таблица
Когда я выбираю 3 пункта и нажимаю кнопку меня перебрасывает на адрес, я хочу что бы под этим адресом была страница, но я не понимаю как мне...