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