javascript - 如何监听 onclick 事件然后添加另一个 onclick 事件

标签 javascript jquery html

我有动态创建的轮播横幅,我无法控制 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]);

最佳答案

我会使用事件委托(delegate),而不用担心更改现有的 onclick 事件。如果您使用 jQuery,您可以执行以下操作:

$('#carousel').on('click', 'a', function(){
    _gaq.push(['_trackEvent', 'slider2', 'click', this.href,0,true]);
});

编辑:

我现在看到原始代码的 onclick 处理程序返回 false,搞砸了事件委托(delegate)。试试这个:

$('#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 事件处理程序。

关于javascript - 如何监听 onclick 事件然后添加另一个 onclick 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22559136/

相关文章:

javascript - 在 Anything Slider 下面添加一个文本框

jquery - 使用 FitText 调整 FontAwesome 图标的大小

javascript - "Liquid"瓦片用 CSS/JS 滚动

javascript - 滚动 jQuery 时导航 anchor 无法正确应用事件类

javascript - 使用 Ajax 在提交时显示两个图像

javascript - 为段落的每个换行符添加跨度

html - 你如何通过 jQuery 在将鼠标悬停在复选框上时生成对话框

javascript - 无序列表和动态元素符号图像

jquery - 如何选择无序列表中包含已选中的复选框的所有列表项?

html - CSS/Div 容器边距问题