使用javascript添加OnClick事件

使用javascript添加OnClick事件,javascript,Javascript,我试图找到一种方法来创建导致onclick事件的类。比如说,用一种形式。我想给表单字段一个类。每次我向字段添加某个类时,我都希望它向表单字段生成onclick命令 我这样做的原因是我想为每个表单字段添加分析跟踪,但我使用重力表单,因此我希望能够在不编辑每个表单的情况下动态创建表单。如果我可以创建一个名为.name的类,并让该类将此onClick=“mixpanel.track('name_field');”添加到表单输入中,那么我就可以跟踪用户每次在表单内单击以填写表单的时间。这样我可以跟踪表单

我试图找到一种方法来创建导致onclick事件的类。比如说,用一种形式。我想给表单字段一个类。每次我向字段添加某个类时,我都希望它向表单字段生成onclick命令

我这样做的原因是我想为每个表单字段添加分析跟踪,但我使用重力表单,因此我希望能够在不编辑每个表单的情况下动态创建表单。如果我可以创建一个名为.name的类,并让该类将此
onClick=“mixpanel.track('name_field');”
添加到表单输入中,那么我就可以跟踪用户每次在表单内单击以填写表单的时间。这样我可以跟踪表单的每个步骤,并查看用户何时离开

所以,这个名单应该是

.name  that would add onClick="mixpanel.track('Name_field');"
.email  that would add onClick="mixpanel.track('Email_field');"
.phone  that would add onClick="mixpanel.track('pnone_field');"

我希望这是有道理的。谢谢你能给我的帮助。我对javascript相当陌生,所以请对我放松点。html和css我是一名专业人士,但javascript是我下一座要攀登的山峰。

委派会更有效,因此您只有一个事件处理程序:

var f = function (e) {
  e = e || window.event;
  var t = e.srcElement || e.target, m;
  while (t !== this && (!t.className || !(m = t.className.match(/\b(name|email|phone)\b/)))) {
    t = t.parentNode;
  }
  if (m) {
    switch (m[0]) {
      case "name": mixpanel.track("Name_field"); break;
      case "email": mixpanel.track("Email_field"); break;
      case "phone": mixpanel.track("phone_field"); break;
    }
  }
};
if (document.body.attachEvent) {
  document.body.attachEvent("onclick", f, true);
} else {
  document.body.addEventListener("click", f, true);
}

欢迎来到SO。你知道,有一些公司是靠这种方式为生的,而且非常擅长(无论好坏)。如果你愿意使用jquery,你可以选择所有具有class属性的输入并添加click处理程序:
$('#formid input[class]')。每个(function(){$(this)。click(mixpanel.track($(this.attr('class').val()+''u field)))
你真的认为在每次点击
主体时运行的类名调度程序比单个元素监听器更有效吗?仅此一项,没有。但最终收益取决于元素的数量、添加/删除的频率以及用户可能点击的频率(通常,平均每页大约1-2次!)