首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用JavaScript跟踪代销商节目广告横幅的点击

用JavaScript跟踪代销商节目广告横幅的点击
EN

Stack Overflow用户
提问于 2011-11-23 14:35:24
回答 3查看 1.5K关注 0票数 0

我有一个网站,我是几个附属项目的用户。

我如何跟踪哪些横幅是被我的访客点击的?

我的网站基本上有两种类型的广告:

由附属程序提供的带有链接的

  1. 横幅(通常是一个空的div,带有一个JavaScript代码,可以在附属程序的服务器上按需检索横幅)

所以我想把我网站的每一个广告块都放在有给定类的DIVs里面,所以每次用户点击其中一个孩子时,我都可以请求确认我的数据库上的这个点击(注意这个部分在代码上不明确)。但这不管用。可能是由于错误的jQuery选择器使用造成的。

出于好奇:这种用法有什么插件吗?

代码

代码语言:javascript
复制
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
    $(document).ready(function() {
        $(".ad").children().live("click", function(event) {
            var id = $(this).attr("id");
            alert(id); //should alert ad-1 or ad-2
        });
        $(".ad-affiliate").children().live("click", function(event) {
            var container = $(this).find(".affiliate-container");
            var id = container.attr("id");
            alert(id); //should alert affiliate-1
        });
    });
</script>
</head>
<body>
    <div class="ad">
        <a target="_blank" href="#">
            <img id="ad-1" src="src1.png"/>
        </a>
        <a target="_blank" href="#">
            <img id="ad-1" src="src1.png"/>
        </a>
    </div>
    <div class="ad-affiliate">
        <div id="affiliate-1" class="affiliate-container">
            <!-- THIS CONTENT IS GIVEN BY THE CODE PROVIDED BY THE AFFILIATE PROGRAM -->
            <!-- It is usually a div with a JavaScript code that populates the div with the content -->
        </div>
    </div>
</body>
</html>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-28 11:58:32

试试这个:

代码语言:javascript
复制
$(document).ready(function() {
    $(".ad").on("click", "a", function(event) {
        var id = $(this).find('img').attr("id");
        alert(id); //should alert ad-1 or ad-2
    });
    $(".ad-affiliate").on("click", "a", function(event) {
        var container = $(this).closest(".affiliate-container");
        var id = container.attr("id");
        alert(id); //should alert affiliate-1
    });
});

这里的例子:http://jsfiddle.net/eLUQd/2/

票数 1
EN

Stack Overflow用户

发布于 2011-11-28 11:56:56

第一个.ad单击函数需要获取img标记的id,而不是链接本身。

代码语言:javascript
复制
$(".ad").children().live("click", function(event) {
    var id = $(this).children('img').attr("id");
    alert(id); //should alert ad-1 or ad-2
});

至于附属链接,这实际上取决于他们的Javascript生成了什么代码,因为您使用类affiliate-container将单击事件附加到整个div,但是用户将单击该div中的任何a链接。

所以你可以不用使用这样的东西:

代码语言:javascript
复制
$(".ad-affiliate a").live("click", function(event) {
    var container = $(this).closest(".affiliate-container");
    var id = container.attr("id");
    alert(id); //should alert affiliate-1
});

请记住,jQuery children选择器不会选择容器中的所有元素,而只选择树中的第一个元素。

http://api.jquery.com/children/

票数 0
EN

Stack Overflow用户

发布于 2011-11-30 11:10:55

单击链接时,根据浏览器的不同,通常会立即到达链接的目标,事件侦听器中的javascript也不会被删除。

这意味着您需要某种“代理”或“中间的人”来检测对元素的单击(并执行所有肮脏的工作,即。将使用数据发送到服务器),然后触发单击,以便用户被重定向到广告的目标。

当页面加载时,只需为每个广告生成一个隐藏链接,从广告中获取原始的href和唯一的Id。当有人点击广告时,使用preventDefault();在广告上单击事件并触发带有匹配Id的隐藏链接,以便用户到达他想要的站点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8243933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档