2012-05-09 199 views
1

我目前使用jquery.address插件来实现深度链接。JQuery.address - 从网址中删除#

例如,我想加载test1.html。我点击链接并显示在地址栏/#/ test1上。 我只想显示/ test1没有hashtag。如果用户重新加载页面,我使用PHP。

这里是我的代码:

JS -

<script type="text/javascript"> 
/*<![CDATA[*/ 
$("document").ready(function(){ 

    function loadURL(url) { 
     console.log("loadURL: " + url); 
     $("#area").load(url); 
    } 


    // Event handlers 
    $.address.init(function(event) { 
     console.log("init: " + $('[rel=address:' + event.value + ']').attr('href')); 
    }).change(function(event) { 
     $("#area").load($('[rel=address:' + event.value + ']').attr('href')); 
     console.log("change"); 
    }) 

    $('a').click(function(){ 
     loadURL($(this).attr('href').replace('', /^#/)); 
    }); 

    }); 

/*]]>*/ 
</script> 

HTML -

<a href="test1.html" rel="address:/test1">Test 1</a> <br /> 
<a href="test2.html" rel="address:/test2">Test 2</a> <br /> <br /> <br /> 

Load Area: <br /> 
<div id="area"></div> 

预先感谢您的帮助!

+4

乍一看,它看起来像你的语法'replace'是向后 –

+0

遗憾的是不工作:/ – JeremyW

回答

0

String.replace

loadURL($(this).attr('href').replace(/^#/, '')); 

编辑:请注意,^意味着"beginning of string"的正则表达式。这意味着它不会匹配字符串"/#/test1"中的任何内容。如果要剥去/#/你应该使用这样的:

'/#/test1'.replace(/\/#\//, ''); 

http://jsfiddle.net/wD7LZ/

+0

感谢您的答案,但它不工作。 这只是一个测试替换函数,但它不起作用:/ – JeremyW

+0

@JeremyWagemans well'^'在正则表达式中意味着“字符串的开始”,这样就不会匹配“/#/page.htm”中的任何内容。 – jbabey

0

为什么不拆,并采取最后一节?

var urlArray = $(this).attr('href').split('/'); 
var page = urlArray[urlArray.length - 1]; 
loadURL(page); 
+0

感谢您的回答。恐怕它不工作:( – JeremyW

+0

@JeremyWagemans再试一次,我用圆括号代替括号。用新代码编辑 –