【问题标题】:How to reference pound sign (#) in jQuery?如何在 jQuery 中引用井号 (#)?
【发布时间】:2010-07-01 07:31:54
【问题描述】:

我一直在尝试一种使用 jQuery 设置网站的新方法,以便在单击链接时动态获取内容。这是jQuery代码:

$(document).ready(function() {

 var content_loader = $('#content-loader');

 $('#nav ul li a').click(function () {
  $(this).closest('ul').find('li.active').removeClass('active');
  $(this).parent().addClass('active');
  content_loader.load('content/' + $(this).attr('data-name') + '.html'); 
  });

 content_loader.load('content/home.html');

});

我一直这样做,因为我的网站背景中有一首歌曲,我想一直播放,而不是每次点击链接时都重新开始。

除了我遇到的两个问题之外,整个事情都很好。

  1. 假设我点击了联系我们链接。我现在会在网址末尾看到#contactus。如果我随后刷新页面,我会再次看到我的主页内容。
  2. 如果我尝试将某人链接到我的联系我们页面,也会出现同样的问题。

我想知道 jQuery 是否能以某种方式找出 url 中 # 符号之后的内容。在这种情况下,我可以更改 jQuery 代码的最后一行以始终加载它而不是 home 数据。

【问题讨论】:

标签: jquery ajax url load sign


【解决方案1】:

window.location.hash 将包含哈希后的值(如果有的话)。 (这是当当前 url 中有一个哈希值时,例如当前页面,在浏览器的地址栏中。)

否则,如果您从 href 读取链接,则需要使用 indexOf('#') 并进行一些解析。

【讨论】:

    【解决方案2】:

    谢谢你们的回答。我现在就是这样做的:

    $(document).ready(function() {
    
        var content_loader = $('#content-loader');
    
        $('#nav ul li a').click(function () {
            $(this).closest('ul').find('li.active').removeClass('active');
            $(this).parent().addClass('active');
            content_loader.load('content/' + $(this).attr('href').slice(1) + '.html');  
            });
    
        var initial = 'home';
        if (window.location.hash) {
            initial = window.location.hash.slice(1);
            }
    
        $('#nav').find('a[href="#' + initial + '"]').parent('li').addClass('active');
        content_loader.load('content/' + initial + '.html');
    
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      相关资源
      最近更新 更多