如何使用jQuery检测URL更改

sky*_*ind 28 javascript url jquery

jQuery如何检测对url的更改?

例如:如果用户进入页面site.com/faq/没有显示任何内容,但是如果他去site.com/faq/#openjquery检测到并执行某些操作.

小智 27

试试这个

$(window).on('hashchange', function(e){
 // Your Code goes here
});
Run Code Online (Sandbox Code Playgroud)

它为我工作


UnL*_*oCo 22

您可以使用hashchange事件.

function hashchanged(){
  var hash = location.hash.replace( /^#/, '' );
 //your code
}

window.addEventListener("hashchange", hashchanged, false);
Run Code Online (Sandbox Code Playgroud)

或者集成一个jquery hashchange插件

$(function(){

  // Bind the event.
  $(window).hashchange(hashchanged);

  // Trigger the event (useful on page load).
  hashchanged();

});

function hashchanged(){
 var hash = location.hash.replace( /^#/, '' );
 //your code
}
Run Code Online (Sandbox Code Playgroud)

  • 另请参阅[jQuery BBQ插件](http://benalman.com/projects/jquery-bbq-plugin/),尽管这可能比OP要求的更复杂. (2认同)

Jam*_*ill 8

只需查看window.location.hash页面加载:

$(document).ready(function() {
    if(window.location.hash === "open")
    {
        //Show something
    }
});
Run Code Online (Sandbox Code Playgroud)

或者绑定到hashchange窗口的事件:

$(document).ready(function() {
    $(window).hashchange(hashchanged);
});

function hashchanged()
{
    //Show something
}
Run Code Online (Sandbox Code Playgroud)


Ror*_*san 2

尝试这个:

if (window.location.hash) {
    // Fragment exists, do something with it
    var fragment = window.location.hash;
}
Run Code Online (Sandbox Code Playgroud)

仅供参考,由 指定的 url 部分#称为“片段”