JavaScript自定义跟踪器

时间:2015-04-20 10:20:02

标签: javascript jquery

我想为CakePHP 2.x中构建的基于Web的应用程序构建跟踪系统。我们的想法是将所有跟踪链接写成如下:

<a 
  href="#" 
  class="track-click" 
  data-tracking='{ 
    "trackers": [
      {
        "tracker": "----", 
        "eventId": "---",
        "tracking_options": { 
          "eventTargetUrl": "---", 
          "props": [{ 
            "key": "----", 
            "value": "---"  
          }]
        } 
      } 
    ]
  }'
/>

处理跟踪请求的javascript应该能够收集驻留在数据跟踪属性中的信息。这可以通过在onClick事件的“跟踪点击”类上附加点击事件来完成。

以下是我使用上述链接的方式:

$('.track-click').click(function(e){
  //Lets grab the data thats within the data-tracking attribute and do something with it
  var data = $(this).attr('data-tracking');
  alert(data.trackers);
  e.preventDefault();
});

目前,如果我提醒上述情况,我会得到不确定的。如果我在我的代码中放入$(this).attr('data-tracking')。val(),我会收到以下错误:

TypeError: $(...).attr(...).val is not a function

如上所示,操作具有json数据的链接的最佳方法是什么?

1 个答案:

答案 0 :(得分:5)

您需要使用

var data = JSON.parse($(this).attr('data-tracking'));

这将返回对象。

否则你必须使用

  var data = $(this).data('tracking');

.data()会返回对象。而.attr()将字符串化并返回该对象。

<强> DEMO