Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery事件currentTarget数据集_Javascript_Jquery_Jquery Data - Fatal编程技术网

Javascript jQuery事件currentTarget数据集

Javascript jQuery事件currentTarget数据集,javascript,jquery,jquery-data,Javascript,Jquery,Jquery Data,在每个jQuery事件中,jQuery都提供了currentTarget,它与this相同,但据我所知,currentTarget的属性取决于您的浏览器 在chrome中,我可以获得event.currentTarget.dataset,它提供启动事件的元素的数据,但我认为这在所有浏览器中都不起作用。我所知道的唯一跨浏览器解决方案是通过将currentTarget包装到另一个jQuery对象中来获取数据,如下所示 var div = jQuery("<div/>").data("nu

在每个jQuery事件中,jQuery都提供了
currentTarget
,它与
this
相同,但据我所知,
currentTarget
的属性取决于您的浏览器

在chrome中,我可以获得
event.currentTarget.dataset
,它提供启动事件的元素的数据,但我认为这在所有浏览器中都不起作用。我所知道的唯一跨浏览器解决方案是通过将currentTarget包装到另一个jQuery对象中来获取数据,如下所示

var div = jQuery("<div/>").data("numbers", [1,2,3]);
div.click(function(e) {
  var data = jQuery(e.currentTarget).data();
  console.log(data.numbers);
});

上面的代码很有效,不是一个糟糕的解决方案,但是有人知道不创建新的jQuery对象而获取数据的方法吗?

请向下查看接受的答案

就我个人而言,我无法让.data()jQuery的东西正常工作(不知道为什么),但上面的方法可以将HTML属性保持在一条直线上

<img src='...' data-numbers='1'>


为什么需要不同的解决方案?坚持jQuery的使用方式有什么问题?@arun Performance。jQuery是为一个plugin.jQuery构建的,它使用
这个
来引用自己的。。。重新写这篇文章有什么意义?特别是当您关心浏览器兼容性时——这是编写jQuery的原因之一!我不认为使用jQuery数据api会导致相当大的开销。感谢您的贡献。不幸的是,我使用jQuery数据的方式略有不同,我没有将其附加到数据属性,而是将其附加到脚本中,使用jQuery数据方法进行设置。我要寻找的答案是如何从事件中携带的事件变量(e)访问数据,而不是再次将其包装到jQuery函数中。它是可访问的,但通过currentTarget中名为dataset的数据属性,我不确定每个浏览器中是否都带有该属性。您可以通过调用不带“data-”的数据并将其余数据转换为小写来获取数据。但在您的情况下,在target或currentTarget(不带jQuery)上使用getAttribute更好。我认为这种方法可以追溯到IE 5。
jQuery("#container").on('click', '.pop-data', function(e) {
  console.log($(e.target).attr('data-numbers'));
});
<img src='...' data-numbers='1'>