2012-05-09 198 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再試一次,我用圓括號代替括號。用新代碼編輯 –