如何在整个javascript范围内获取最后点击的事件数据

时间:2015-02-04 09:07:16

标签: javascript jquery html

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()。

  

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

4 个答案:

答案 0 :(得分:0)

实现这一目标的方法有限。一种是将参数传递给被调用的函数 另一种方法是仅引用该函数,并保留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);

答案 1 :(得分:0)

<强> Global variable in javascript

&#13;
&#13;
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();
}));
&#13;
<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>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

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

my_fun.call(this);

jsFiddle

答案 3 :(得分:0)

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);
});