【问题标题】:passing `this` through a function as a variable with jquery通过函数将`this`作为变量与jquery传递
【发布时间】:2019-09-26 19:34:01
【问题描述】:

我想将执行操作的元素传递给函数,但不知道该怎么做。

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

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

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

这就是我认为它会起作用的方式,但没有做任何事情。有没有可能?

【问题讨论】:

  • 你能分享一个最小的 HTML 吗?
  • 添加了一些html
  • 这就是你的 JS 吗?它有语法错误。

标签: jquery function variables this


【解决方案1】:
  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>

【讨论】:

    【解决方案2】:

    确保您的代码有效,更有效地尝试:

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

    $(document) 将确保您的代码始终有效。

    【讨论】:

      【解决方案3】:

      重新检查你的代码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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-07
        • 1970-01-01
        • 2012-04-20
        • 1970-01-01
        • 1970-01-01
        • 2012-03-02
        • 2011-01-18
        • 2011-07-23
        相关资源
        最近更新 更多