如何为heatmap.js添加点击事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为heatmap.js添加点击事件相关的知识,希望对你有一定的参考价值。

参考技术A 下载zip文件,并解压文件,获取路径。

生成一个div用于渲染。
h337.create()创建对象,使用containter:指定容器,生成heatmapformat数据data,使用setData()函数设置数据。

实例一:
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
div
width:600px; height:400px;border: 1px solid;border-color: grey;

</style>
</head>
<body>
<div id="heatmap"></div>
</body>
<script src="C:\Users\jyjh\Desktop\heatmap.js-2.0.5\heatmap.js-2.0.5\build\heatmap.js"></script>
<script type="text/javascript">
var heatmapInstance = h337.create(
container: document.querySelector('#heatmap'),
);
var points = [];
var max = 0;
var width = 600;
var height = 400;
var len = 20;
while (len--)
var val = Math.floor(Math.random()*100);
max = Math.max(max, val);
var point =
x: Math.floor(Math.random()*width),
y: Math.floor(Math.random()*height),
value: val
;
points.push(point);

var data =
max: max,
data: points
;
heatmapInstance.setData(data);
</script>
</html>

实例二:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
div
width:600px; height:400px;border: 1px solid;border-color: grey;


</style>
</head>
<body>
<div id="heatmap">
</div>
</body>
<script src="C:\Users\jyjh\Desktop\heatmap.js-2.0.5\heatmap.js-2.0.5\build\heatmap.js"></script>
<script type="text/javascript">
var heatmapInstance = h337.create(
container: document.querySelector('#heatmap'),
backgroundColor: 'rgba(0,0,0,.95)',
gradient:
'.5': 'blue',
'.8': 'red',
'.95': 'white'
,
maxOpacity: .9,
minOpacity: .3
);

var points = [];
var max = 0;
var width = 840;
var height = 400;
var len = 300;

while (len--)
var val = Math.floor(Math.random()*100);
var radius = Math.floor(Math.random()*70);

max = Math.max(max, val);
var point =
x: Math.floor(Math.random()*width),
y: Math.floor(Math.random()*height),
value: val,
radius: radius
;
points.push(point);


var data =
max: max,
data: points
;

heatmapInstance.setData(data);
</script>
</html>

如何为自定义 uicontrol 和控制器添加触摸事件?

【中文标题】如何为自定义 uicontrol 和控制器添加触摸事件?【英文标题】:How to add touch event for custom uicontrol and controller? 【发布时间】:2017-09-10 21:50:51 【问题描述】:

我有一个具有三个子视图的自定义 UIControl。每个子视图,我添加一个目标:

button.addTarget(self, action: #selector(buttonTapped(clickedBtn:)), for: .touchUpInside)

在那个函数buttonTapped中,它会做一些特殊的动画来做一些过渡(它模仿分段控制)。

现在,在这个自定义 UIControl 所在的 ViewController 中,必须知道它何时被触摸。我为自定义 UIControl 创建了一个与触摸事件交互的 @IBAction 函数。

问题是,这是不可能的(据我所知)。如果我将目标触摸事件添加到子视图,则不会调用父触摸事件。要让父视图调用@IBAction 函数,我必须设置所有子视图的 setUserInteractiveEnabledtotrue`。当我这样做时,不会调用子视图的触摸事件函数。

我需要调用两个触摸事件函数。我怎样才能做到这一点?或者解决这个问题的最佳方法是什么?

【问题讨论】:

能否将整个自定义控件设为IBAction,然后在.touchUpInside中确定哪个子视图被点击了? 【参考方案1】:

使用委托,在 UIControl 中添加一个需要在 ViewController 中实现的协议

通过这种方式,您可以检测是否单击了 UIControl 中的按钮并调用 VC 中的特定函数。

例如:

//YourUIControl.Swift
protocol YourUIControlDelegate 
  func didTapFirstButton()


class YourUiControl : UIView  //I'm assuming you create your UIControl from UIView

  var delegate : YourUIControlDelegate?
  //other codes here
  .
  .
  .
  @IBAction func tapFirstButton(_ sender: AnyObject) 
     if let d = self.delegate 
       d.didTapFirstButton()
     
  


//YourViewController.Swift
extension YourViewController : UIControlDelegate 
  func didTapFirstButton() 
     //handle first button tap here
  

【讨论】:

成功了!我唯一需要添加的是在YourViewController 中,在viewDidLoad 中,您需要将YourUIControl 委托设置为self。

以上是关于如何为heatmap.js添加点击事件的主要内容,如果未能解决你的问题,请参考以下文章

如何为django中的按钮绑定事件

如何为 jQuery 列表视图中的特定链接创建点击事件。

如何为 Event Tracking Activecampaign 跟踪事件

如何为viewpager添加单击事件实现界面跳转

js如何为动态添加进来的a超级链接元素添加click事件函数

如何为基于聚合物的网页创建点击事件