Thursday, February 19, 2009

Ignore query in jQuery treeview persist location

The jQuery treeview plugin can be found here, it is a brilliant plugin which makes amazing treeviews.

But when i use:

persist: "location"

 I run into a little "problem", because i would like to have the treeview item selected when i use query's in the URL, and as default it just doesn't select any when using query.

What I need to do is to detect if there is a query in the url and then ignore it, I've done it the following way:

case "location":

var current = this.find("a").filter(function()
    return this.href.substring(0, (this.href.indexOf("?") == -1) ? this.href.length: this.href.indexOf("?")).toLowerCase() == location.href.substring(0, (location.href.indexOf("?") == -1) ? location.href.length: location.href.indexOf("?")).toLowerCase();

It is a pretty simple fix and works like a charm!



This version is also able to handle bookmarks and query in url.

case "location":

var current = this.find("a").filter(function()
    var linkLength = (this.href.indexOf("?") != -1) ? this.href.indexOf("?") : (this.href.indexOf("#") != -1) ? this.href.indexOf("#") : this.href.length;
    var link = this.href.substring(0, linkLength);

    var urlLength = (location.href.indexOf("?") != -1) ? location.href.indexOf("?") : (location.href.indexOf("#") != -1) ? location.href.indexOf("#") : location.href.length;
    var url = location.href.substring(0, urlLength);

    return link.toLowerCase() == url.toLowerCase();

No comments:

Post a Comment