2012-05-09 22 views
1

現在、ディープリンクを実現するためにjquery.addressプラグインを使用しています。JQuery.address - URLから#を削除

たとえば、test1.htmlを読み込みたいとします。リンクをクリックすると、アドレスバー/#/ test1に表示されます。 ハッシュタグなしで/ test1だけを表示したいと思います。ユーザーがページをリロードした場合にPHPを使用します。 -

<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> 

おかげ

JS:

は、ここに私のコードです!

+4

replace' 'のためのあなたの構文は残念ながら後方 –

+0

動作していないように、それが見えます:/ – JeremyW

答えて

0

String.replace

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

編集:^は正規表現で"beginning of string"を意味することに注意してください。つまり、文字列"/#/test1"には一致しません。あなたが取り除くしたい場合は/#/あなたはこれを使用してする必要があります。

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

http://jsfiddle.net/wD7LZ/

+0

あなたの答えをありがとうしかし、それは動作しません。 これは単なるreplace関数のテストでしたが、うまくいきません:/ – JeremyW

+0

@JeremyWagemansよく '^'は正規表現の "beginning of string"を意味するので、 "/#/page.htm" 。 – jbabey

0

はなぜそれを分割し、最後のセクションを取りますか?一見

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

あなたの答えをありがとう。私はそれが動作しない恐れがあります:( – JeremyW

+0

@JeremyWagemans再度試してください、私は括弧のかっこを使用していました。 –

関連する問題