передача `this` через функцию как переменную с помощью jquery - PullRequest
0 голосов
/ 09 мая 2019

Я хочу передать элемент, выполняющий действие, функции, но не уверен, как это сделать.

$('.report_chart_enquiries').click(function(){
    showing_barcharts(this);
}

function showing_barcharts(elem) {
     $(elem).addClass('report_chart_current');
}

<div class="report_chart_enquiries">Enquiries</div>

Вот как я думал, что это будет работать, но ничего не делал.Это вообще возможно?

Ответы [ 3 ]

1 голос
/ 09 мая 2019
  1. Вы можете передать именованную функцию в обработчик щелчка и использовать параметр с .target, чтобы получить элемент, вызвавший событие

$('.report_chart_enquiries').click(showing_barcharts)

function showing_barcharts(elem) {
  $(elem.target).addClass('report_chart_current');
}
.report_chart_current {
  color: red
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="report_chart_enquiries">Enquiries</div>
1 голос
/ 09 мая 2019

Перепроверьте свой код js:

$('.report_chart_enquiries').click(function(){
    showing_barcharts(this);
}); //you mistaked there

function showing_barcharts(elem) {
    $(elem).addClass('report_chart_current');
}

Это демонстрационная ссылка https://jsfiddle.net/f10cpkyd/

0 голосов
/ 09 мая 2019

Убедитесь, что ваш код работает, попробуйте это более эффективно:

$(document).on('click', '.report_chart_enquiries', function(){
    showing_barcharts(this);
}); 

function showing_barcharts(elem) {
    $(elem).addClass('report_chart_current');
}

$ (документ) гарантирует, что ваш код всегда работает.

...