Создание атрибута отслеживания данных, с которым связывается jQuery для отслеживания данных

Вот что я собираюсь сделать. используя атрибут отслеживания данных в ссылках и кнопках, которые будут содержать данные, которые я хочу отправить в Mixpanel ... Что-то вроде:

щелкни по нему

Затем каким-то образом jQuery привязывается к любому щелчку, содержащему дорожку данных. Или, может быть, привязать ко всем кликам, и если элемент содержит атрибут отслеживания данных, возьмите значение и отправьте его в mixpanel следующим образом:

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

Возможный? Отличная идея? Плохая идея? Есть идеи о том, как реализовать, не требуя тонны кода?

Спасибо


person AnApprentice    schedule 01.09.2011    source источник


Ответы (3)


попробуйте этот селектор $('.YourClass[data-track]')

person Erel    schedule 01.09.2011

Извините за воскрешение, но вот (непроверенное) решение, которое должно работать. Вы можете указать имя события, используя свойство data-track, а любые дополнительные атрибуты события, используя строку JSON в свойстве data-track-attrs. JavaScript привяжется к обработчику кликов для любого элемента со свойством data-track и отправит событие в 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);

    });
  });
person Alex Vidal    schedule 27.03.2012

Супер поздний ответ на старый вопрос, но вот плагин jQuery, который делает именно это (и многое другое): http://os.lucidfusion.com/datatrack/

person Ben Fried    schedule 02.08.2015