2013-03-14 83 views
2

我正在使用Joomla网站,因此它使用的是Mootools。将事件跟踪代码从Jquery转换为Mootools

我需要在联系表单提交按钮上使用Analytics事件跟踪;然而,JQuery不工作,我尝试了所有的选项,通过使用NoConflict,而不是。

这是我需要在提交按钮上使用的Jquery代码。我怎样才能将它转换成Mootools?

onclick="var _this=this;_gaq.push([ 
    '_set', 
    'hitCallback', 
    function({ 
    $(_this).parents('form').first().submit(); 
    } 
]); 

_gaq.push([ 
    '_trackEvent', 
    'Contact', 
    'Appointment', 
    , 
    , 
    false] 
); 

return !window._gat;" 

希望你能帮上忙。

谢谢。

+0

你试过在noconflict模式下设置jQuery来用'jQuery'替换'$'吗? – 2013-03-14 09:55:06

+0

是的,那正是我所做的。 gaq.push没有开火。它应该工作吗?我遇到的主要问题是表单在发布事件之前提交,所以我必须添加上面的Jquery代码。也许我们可以解决根本问题? – 2013-03-14 10:14:03

+0

您使用的是哪种版本的MooTools?并且你是否阻止点击上的默认操作(提交)? (否则表单将提交之前的JavaScript可以工作) – kolin 2013-03-14 11:23:41

回答

0

MooTools 1.1不支持getParent与选择器,所以你不妨直接使用DOM API。我已经重写功能(有关闭括号在您发布的代码丢失,BTW)

function() { 
    $(_this).parents('form').first().submit(); 
} 

如下:

function() { 
    for (var el = _this.parentNode; el; el = el.parentNode) { 
     if (el.tagName == 'form') { 
      el.submit(); 
      break; 
     } 
    } 
} 

如果元素向其中添加单击处理程序是input元素,你可以简单地使用:

function() { _this.form.submit(); } 

还要注意的是使用onclick属性通常是不好的做法。您应该考虑使用MooTools'Element.addEvent添加事件处理程序。