我有动态创建的轮播横幅,我无法控制HTML。它为旋转木马中的每个图像生成以下代码,唯一改变的是img id;它上升了1。
<a href="/somelike.aspx" onclick="window.open(this.href, (this.target? this.target : '_self'));return false;"><img id="theimg1_0" src="someimage.jpg" alt="Slide Show Image" title="" border="0"></a>
我需要写一些jQuery,所以当这个事件被触发时:
onclick="window.open(this.href, (this.target? this.target : '_self'));
我解雇了这个事件:
_gaq.push(['_trackEvent', 'slider2', 'click', $(this).attr('href'),0,true]);
答案 0 :(得分:3)
我会使用事件委托,而不用担心更改现有的onclick事件。如果你使用的是jQuery,你可以这样做:
$('#carousel').on('click', 'a', function(){
_gaq.push(['_trackEvent', 'slider2', 'click', this.href,0,true]);
});
编辑:
我现在看到原始代码的onclick处理程序返回false,搞砸了事件委托。试试这个:
$('#carousel').on('mousedown', 'a', function(){
this.onclick = function(e){
window.open(this.href, (this.target? this.target : '_self'));
_gaq.push(['_trackEvent', 'slider2', 'click', this.href,0,true]);
e.preventDefault();
}
});
mousedown应该在onclick事件触发之前触发,让你有机会替换onclick事件处理程序。
答案 1 :(得分:0)
只需将函数引用为事件处理程序,如下所示:
HTML:
<a href="/somelike.aspx" onclick="onClickHandler();"><img id="theimg1_0" src="someimage.jpg" alt="Slide Show Image" title="" border="0"></a>
的javascript:
function onClickHandler(){
window.open(this.href, (this.target? this.target : '_self'));
_gaq.push(['_trackEvent', 'slider2', 'click', $(this).attr('href'),0,true]);
}