创建jQuery绑定的数据跟踪属性以跟踪数据

时间:2011-09-01 04:04:02

标签: javascript jquery html html5 mixpanel

这就是我在想的事情。在链接和按钮中使用数据轨道属性,其中包含我要发送给Mixpanel的数据...类似于:

点击它

然后以某种方式jQuery绑定到包含数据轨道的任何点击。或者绑定到所有点击,如果项目包含数据轨道属性,请取值并提交到mixpanel,如下所示:

mpq.track("Open slideshow", {'show': 'Xmas'}, function(){ myfunction() });

可能?好主意?馊主意?关于如何实现而不需要大量代码的任何想法?

由于

3 个答案:

答案 0 :(得分:1)

尝试此选择器$('.YourClass[data-track]')

答案 1 :(得分:1)

抱歉复活,但这是一个应该有效的(未经测试的)解决方案。您可以使用data-track属性指定事件名称,并使用data-track-attrs属性中的JSON字符串指定任何其他事件属性。 javascript将绑定到具有data-track属性的任何元素的click处理程序,并将事件分派给Mixpanel。如果本机JSON解码器不可用,它将无声地失败。

<div class="header">
  <a href="#" data-track="Login" data-track-attrs='{ "where": "header" }'>login</a>
</div>

<a href="#" data-track="Open slideshow" data-track-attrs="{ show: 'Xmas' }">open xmas</a>

<div class="footer">
  <a href="#" data-track="Login" data-track-attrs='{ "where": "footer" }'>login</a>
</div>

<script type="text/javascript">
  $(function() {
    $("body").on('click', '[data-track]', function(evt) {
      var event_name = $(this).data('track');
      var event_attrs;
      try {
        event_attrs = JSON.parse($(this).data('track-attrs'));
      } catch(e) {}

      mixpanel.track(event_name, event_attrs);

    });
  });

答案 2 :(得分:-1)

一个老问题的超级迟到答案,但这里是一个jQuery插件,它正是这样做的(还有更多): http://os.lucidfusion.com/datatrack/