views:

73

answers:

2

I've got a jQuery routine I need to convert to MooTools, but I can't get it to work. Here's my jQuery version:

$(".google-analytics-link").click(function () {
    var href = $(this).attr("href");
    pageTracker._link(href);
    location.href = href;
    return false;
});

Here's my MooTools translation:

$$(".google-analytics-link").addEvent("click", function () {
    var href = this.get("href");
    pageTracker._link(href);
    location.href = href;
    return false;
});

Doesn't seem to work though. I don't understand MooTools selectors. Any help, please?

A: 
$$(".google-analytics-link").each(function (e) { 
    e.addEvent("click", function () {
        var href = this.get("href");
        pageTracker._link(href);
        location.href = href;
        return false;
    });
});
CD Sanchez
`$$(selector).addEvent()` will automatically iterate through the whole element collection returned by $$, does that since 1.1x(?) - so this is probably not it.
Dimitar Christoff
+1  A: 

You don't need to explicitly set the window's location when clicking the link already does it. Currently the code stops the native event, calls a method on the pageTracker object, then redirects to the location of the clicked link.

Google Analytics documentation for the _link method says that

This method works in conjunction with the _setDomainName() and _setAllowLinker() methods to enable cross-domain user tracking. The _link() method passes the cookies from this site to another via URL parameters (HTTP GET). It also changes the document.location and redirects the user to the new URL.

implying that you simply have to stop the click event, and call the _link method which will take care of the rest.

var analyticsLinks = document.getElements('.google-analytics-link');

analyticsLinks.addEvent('click', function(event) {
    // stop the page from navigating away
    event.stop();
    var href = this.get('href');
    // let the Analytics API do its work, and then redirect to this link
    pageTracker._link(href);
});
Anurag
cool, even better
Dimitar Christoff