如何获取整个 JavaScript 范围内上次单击的事件数据
how to get last clicked event data in entire javascript scope
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);
最后,还有bind
、apply
或call
my_fun.bind(this)();
// or
my_fun.call(this);
// or
my_fun.apply(this, arguments);
相关文章:
- 在 iframe 内单击后通过 jQuery 或 javascript 获取警报
- ng在ui gmap窗口内单击不起作用
- Angularjs 将切换功能仅应用于 ng-repeat 内单击的按钮
- 如何获取整个 JavaScript 范围内上次单击的事件数据
- 如何启用事件单击仅在指定的小时范围内
- 如何制作整行以及其中的复选框,当我在表格行内单击时单击和取消单击
- 获取单击的列表项的范围内的文本
- PHP 在输入内单击一次
- JQuery 在 标签内单击不起作用
- 本地存储迭代获取 for 循环内单击的按钮的值
- 用于相对于用户在约束内单击的位置定位框的数学公式
- 在网格视图内(单击时标签转到文本框)一次一个
- 在DIV内单击更改图像
- 如何确定在画布中的未成形对象内单击
- 为表行悬停引导弹出窗口:不可能在弹出窗口内单击链接
- 当在Chrome的文本区域内单击选项卡键时,preventDefault()
- 在锚点内单击DOM生成的元素时防止锚点行为
- 在网站内单击时,将javascript变量(trailimage)交换为另一个需要什么代码
- 在主体区域内单击触发事件
- Javascript函数允许在范围(08 - 15)之间输入时间,或者在单击时在文本框中输入默认(在范围内)时间