jQuery on Click 不适用于 Ajax 生成的内容



我正在使用jQuery("#content").on('click', 'a', function() {});以将亚马逊会员标签添加到我的内容中。我的内容是由 ajax 调用生成的。

我的脚本捕获了单击;但链接未被修改

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;
    }   
}); 

我怎样才能让它工作?

编辑:
巴马尔是对的,他的例子有效。
但是,另一个脚本(Skimlinks)似乎在之后修改了链接。
看这里
当我的函数成功追加时,如何避免这个其他脚本的进程?谢谢。。。

Skimlinks 有自己的点击处理程序,它以与您大致相同的方式修改链接。它在代码之前运行,而不是之后运行。以下是它将链接更改为的内容:

<a href="http://redirect.kadolog.com/?id=75284X1526071&amp;site=kadolog.be&amp;xs=1&amp;isjs=1&amp;url=http%3A%2F%2Fwww.amazon.fr%2Ffoo1&amp;xguid=560420e8d59460f59daf72824e859763&amp;xuuid=3df2f1da98b6a4bda13909d043bb3f0d&amp;xsessid=141dd024a3348df74d7e1743db5f6891&amp;xcreo=0&amp;xed=0&amp;sref=http%3A%2F%2Ffiddle.jshell.net%2Fgkp7dg1f%2Fshow%2F&amp;pref=http%3A%2F%2Fjsfiddle.net%2Fgkp7dg1f%2F&amp;xtz=240" 
    sl-processed="1" 
    data-skimlinks-orig-link="http://www.amazon.fr/foo1">Link1</a>

您可以检查是否设置了 data-skimlinks-orig-link 属性,然后使用该属性代替 link.href 。此外,原始 URL 位于替换链接的 url= 参数中,您可以尝试修改 URL 的该部分。

另一种选择是重写链接,以便在使用 AJAX 加载内容后立即添加您的会员标签,而不是在单击处理程序中。Skimlinks常见问题解答说他们不会修改已经具有会员标签的链接。

相关内容

  • 没有找到相关文章

最新更新