Justin
Justin

Reputation: 45320

jQuery conditional on the url hash

In jQuery how can I check if a user is visiting a particular direct id link url?

For example:

http://mydomain.com/#foo

I this case, I like to check for foo.

Would love something like:

if(jQuery.urlHasHash("foo")) {
    //logic here
 }

Upvotes: 0

Views: 171

Answers (3)

Donovan Charpin
Donovan Charpin

Reputation: 3397

Try my jsFiddle : jsFiddle here

// it might be from browser & / anywhere else
var url = "http://mydomain.com/#foo";
url = url.split('#').pop().split('?').pop();
var page = url.substring(url.lastIndexOf('/') + 1);
console.log(page); // foo

or just

var url = "http://mydomain.com/#foo";
var page = url.substring(url.lastIndexOf('/') + 1); // #foo

After you can use if statement to know if (page == "foo")

Upvotes: 0

Tats_innit
Tats_innit

Reputation: 34107

Try this Demo http://jsfiddle.net/7QceB/

This might fit your needs :)

Code

$(function(){
    //var href = location.href; // get the url
    var href = "http://mydomain.com/#foo"; // example url
    var split = href.split("#"); // split the string; usually there'll be only one # in an url so there'll be only two parts after the splitting
    var afterSplit = "Error parsing url";
    if(split[1] != null){
        afterSplit = split[1];
    }
    // If everything went well shows split[1], if not then de default error message is shown
    alert(afterSplit);
});

Upvotes: 0

dan-lee
dan-lee

Reputation: 14492

No need for jQuery, your browser gives you all you need with document.location.hash

If you want to check if such an ID exists on your page:

var hash = document.location.hash.replace(/^#/, '');

if (document.location.hash != '' && document.getElementById(hash) { 
  // or just: $(document.location.hash)
  // ...
}

Upvotes: 2

Related Questions