如何获取整个 JavaScript 范围内上次单击的事件数据

how to get last clicked event data in entire javascript scope

本文关键字:范围内 单击 数据 事件 JavaScript 何获取 获取      更新时间:2023-09-26

function my_fun(){
  var data = $(this).data();
  // this is undefined
  console.log(data.crm);
}
$(document).on('click', '#add_image', (function() {
  var data = $(this).data();
  // this works
  console.log(data.crm);
  my_fun();
}));
<a class="add_img" href="#" data-crm="1" id="add_image">Add Image</a>

基本上我想在 my_fun() 中访问 html 链接集数据(即数据集 crm 的值),而无需将参数发送到 my_fun()。

如何访问点击事件 html 设置整个 JavaScript 范围内的数据。 JavaScript。

JavaScript 中的全局变量

function my_fun() {
  console.log(data.crm);
}
$(document).on('click', '#add_image', (function(e) {
  e.preventDefault();
  data = $(this).data();
  console.log(data.crm);
  my_fun();
}));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a class="add_img" href="#" data-crm="1" id="add_image">Add Image</a>

function my_fun(event){
   var data = $(event.target).data();
   console.log(data.crm);
}
$(document).on('click', '#add_image', my_fun);

  function my_fun(event){
       var data = $(event.target).data();
       console.log(data.crm);
    }
    $(document).on('click', '#add_image', function(e){          
      my_fun(e);
});

您必须通过call方法将上下文传递给函数:

my_fun.call(this);

js小提琴

执行此操作

的方法有限。一种是将参数传递给被调用的函数。
另一种是只引用函数,您将保留this

function my_fun(){
   var data = $(this).data();
   // this is undefined
   console.log(data.crm);
}
$(document).on('click', '#add_image', my_fun);

最后,还有bindapplycall

my_fun.bind(this)();
// or
my_fun.call(this);
// or
my_fun.apply(this, arguments);