我有一个网站,我是几个附属项目的用户。
我如何跟踪哪些横幅是被我的访客点击的?
我的网站基本上有两种类型的广告:
由附属程序提供的带有链接的
所以我想把我网站的每一个广告块都放在有给定类的DIVs里面,所以每次用户点击其中一个孩子时,我都可以请求确认我的数据库上的这个点击(注意这个部分在代码上不明确)。但这不管用。可能是由于错误的jQuery选择器使用造成的。
出于好奇:这种用法有什么插件吗?
代码
<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>发布于 2011-11-28 11:58:32
试试这个:
$(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/
发布于 2011-11-28 11:56:56
第一个.ad单击函数需要获取img标记的id,而不是链接本身。
$(".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链接。
所以你可以不用使用这样的东西:
$(".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/
发布于 2011-11-30 11:10:55
单击链接时,根据浏览器的不同,通常会立即到达链接的目标,事件侦听器中的javascript也不会被删除。
这意味着您需要某种“代理”或“中间的人”来检测对元素的单击(并执行所有肮脏的工作,即。将使用数据发送到服务器),然后触发单击,以便用户被重定向到广告的目标。
当页面加载时,只需为每个广告生成一个隐藏链接,从广告中获取原始的href和唯一的Id。当有人点击广告时,使用preventDefault();在广告上单击事件并触发带有匹配Id的隐藏链接,以便用户到达他想要的站点。
https://stackoverflow.com/questions/8243933
复制相似问题