jquery 单击对 ajax 生成的内容不起作用
jquery on click doesnt work on ajax generated content
我正在使用 jQuery("#content").on('click', 'a', function() {});
为我的内容添加 Amazon Affiliate 标签。我的内容是通过 ajax 调用生成的。
我的脚本正在捕获点击;但是 link 没有被修改。
jQuery(document).ready(function() {
jQuery("#content").on('click', 'a', function() {
addAffiliate(this);
});
amazonFRTag = "tag=XXXXXXX-21";
function addAffiliate(link) {
if ((link.href).indexOf("amazon.fr") > -1 && (link.href).indexOf(amazonFRTag) < 0){
(link.href) = (link.href).replace("?tag=", "?old-tag=");
(link.href) = (link.href).replace("&tag=", "&old-tag=");
if ((link.href).indexOf("?") > -1 ) {
link.href = link.href + "&" + amazonFRTag;
}
else {
link.href = link.href + "?" + amazonFRTag;
}
}
return true;
}
});
我怎样才能让它发挥作用?
编辑:
Barmar 是对的,他的榜样很有效。
但是,另一个脚本 (Skimlinks) 似乎会在之后修改 links。
See here
当我的函数成功进行追加时,如何避免其他脚本的处理?谢谢...
Skimlinks 有自己的点击处理程序,它以与您相同的方式修改 link。它是 运行 在 你的代码之前,而不是之后。这是它将 link 更改为:
<a href="http://redirect.kadolog.com/?id=75284X1526071&site=kadolog.be&xs=1&isjs=1&url=http%3A%2F%2Fwww.amazon.fr%2Ffoo1&xguid=560420e8d59460f59daf72824e859763&xuuid=3df2f1da98b6a4bda13909d043bb3f0d&xsessid=141dd024a3348df74d7e1743db5f6891&xcreo=0&xed=0&sref=http%3A%2F%2Ffiddle.jshell.net%2Fgkp7dg1f%2Fshow%2F&pref=http%3A%2F%2Fjsfiddle.net%2Fgkp7dg1f%2F&xtz=240"
sl-processed="1"
data-skimlinks-orig-link="http://www.amazon.fr/foo1">Link1</a>
您可以检查是否设置了 data-skimlinks-orig-link
属性,然后使用它代替 link.href
。另外,原来的URL是在url=
参数中替换link,你可以试试修改URL.
的那部分
另一种选择是重写 link,以便在您使用 AJAX 加载内容后立即添加您的会员标签,而不是在点击处理程序中添加。 Skimlinks FAQ 说他们不会修改已经有附属标签的 links。
我正在使用 jQuery("#content").on('click', 'a', function() {});
为我的内容添加 Amazon Affiliate 标签。我的内容是通过 ajax 调用生成的。
我的脚本正在捕获点击;但是 link 没有被修改。
jQuery(document).ready(function() {
jQuery("#content").on('click', 'a', function() {
addAffiliate(this);
});
amazonFRTag = "tag=XXXXXXX-21";
function addAffiliate(link) {
if ((link.href).indexOf("amazon.fr") > -1 && (link.href).indexOf(amazonFRTag) < 0){
(link.href) = (link.href).replace("?tag=", "?old-tag=");
(link.href) = (link.href).replace("&tag=", "&old-tag=");
if ((link.href).indexOf("?") > -1 ) {
link.href = link.href + "&" + amazonFRTag;
}
else {
link.href = link.href + "?" + amazonFRTag;
}
}
return true;
}
});
我怎样才能让它发挥作用?
编辑:
Barmar 是对的,他的榜样很有效。
但是,另一个脚本 (Skimlinks) 似乎会在之后修改 links。
See here
当我的函数成功进行追加时,如何避免其他脚本的处理?谢谢...
Skimlinks 有自己的点击处理程序,它以与您相同的方式修改 link。它是 运行 在 你的代码之前,而不是之后。这是它将 link 更改为:
<a href="http://redirect.kadolog.com/?id=75284X1526071&site=kadolog.be&xs=1&isjs=1&url=http%3A%2F%2Fwww.amazon.fr%2Ffoo1&xguid=560420e8d59460f59daf72824e859763&xuuid=3df2f1da98b6a4bda13909d043bb3f0d&xsessid=141dd024a3348df74d7e1743db5f6891&xcreo=0&xed=0&sref=http%3A%2F%2Ffiddle.jshell.net%2Fgkp7dg1f%2Fshow%2F&pref=http%3A%2F%2Fjsfiddle.net%2Fgkp7dg1f%2F&xtz=240"
sl-processed="1"
data-skimlinks-orig-link="http://www.amazon.fr/foo1">Link1</a>
您可以检查是否设置了 data-skimlinks-orig-link
属性,然后使用它代替 link.href
。另外,原来的URL是在url=
参数中替换link,你可以试试修改URL.
另一种选择是重写 link,以便在您使用 AJAX 加载内容后立即添加您的会员标签,而不是在点击处理程序中添加。 Skimlinks FAQ 说他们不会修改已经有附属标签的 links。