2009-04-25 13 views
5

これは、このSpiffing Webサイトの最初の投稿ですので、他の場所で議論されていれば私には簡単に行くことができます。JQuery URLパーサープラグインを使用している場合は、さらに洗練されたソリューションが必要です。

私はここで見つけるjQueryのURLパーサープラグインを使用していますが:http://projects.allmarkedup.com/jquery_url_parser/

私はそれは私がやりたいことを得ることができますが、コードは、むしろ非効率的です。私は、関連する見出しがクリックされたときに開く隠しdivのコレクションを持っています。私はリンクが別のページからクリックされた場合、関連するdivが見えるようにURLパーサーを使用しています。あなたは、これはかなり長い息切れで見ることができるように

if 
(jQuery.url.attr('anchor') == 'question1'){ 
    $('#answer1').show(); 
} 
else if 
(jQuery.url.attr('anchor') == 'question2'){ 
    $('#answer2').show(); 
} 
else if 
(jQuery.url.attr('anchor') == 'question3'){ 
    $('#answer3').show(); 
} 
else if 
(jQuery.url.attr('anchor') == 'question4'){ 
    $('#answer4').show(); 
} 
else if 
(jQuery.url.attr('anchor') == 'question5'){ 
    $('#answer5').show(); 
} 
else if 
(jQuery.url.attr('anchor') == 'question6'){ 
    $('#answer6').show(); 
} 
else if 
(jQuery.url.attr('anchor') == 'question7'){ 
    $('#answer7').show(); 
} 
else if 
(jQuery.url.attr('anchor') == 'question8'){ 
    $('#answer8').show(); 
}; 

私のコードは次のようになります。私が本当にやりたいことは、URLの末尾にある番号を取って#answerに追加することです。そうすれば、はるかにコンパクトになります。私は、変数に(jQuery.url.attr(「アンカー」)の結果を代入しようとしていたが、私はこれを達成するトラブルのビットを持っています。任意の助けいただければ幸いです!

答えて

10
var match = jQuery.url.attr('anchor').match(/^question([0-9]+)$/); 
if (match && match.length > 0) { 
    $('#answer' + match[1]).show(); 
} 

を更新しました。

+0

これは素晴らしいです!ありがとう! – i0n

+0

私はちょうどこのソリューションの問題を発見しました。アンカータグがない場合、ヘッダ項目の表示機能は機能しなくなります。 私はすべての詳細を含む新しい質問を作成し、この質問について詳述しました。新しいものはここにあります:http://is.gd/uGUm – i0n

+0

これは実際にはこの解決策には問題ありません。もしあなたがデフォルトの質問を表示したいならば、最初の行をvar match =(jQuery.url.attr( 'anchor')| "question1")にマッチさせる(/^question([0-9] +)$ /) ;; –

1

また、このようなコードの1行でこれを行うことができます。

$('#answer' + $.url.attr('anchor').match(/question(\d+)|(.*)/)[1]).show(); 

を今、この技術は、いくつかの説明がかかる場合があります。基本的に、何をここでやっていることは問題が含まれている文字列を検索しようとしています(n)ここで、「質問(n)」は最初の一致、(n)は2番目の一致です。もしそれが見つからなければ "|(.*)"は "OR Anything"と書かれていて、それはaで包まれているから*。何も最初の一致と2番目の一致です。あなたは何もしない

$('answer' + '').show(); // where $('answer' + '').length == 0 

を呼び出している失敗した試合で

$('answer' + '1').show(); 

を呼び出している成功した試合では

大文字小文字を区別しない場合は、正規表現として使用します。

/question(\d+)|(.*)/i 
+0

これも同様に動作し、多くの感謝!あなたのマッチが – i0n

+0

、あなたは何にもマッチします。 「アンカー」は「asdasdasdasd」であると一致する可能性があります。* –

+0

@Deviant私は新しいアップデートでそれをテストし、それはまだ失敗し、それは私が考える方法を働いていた場合、あなたはそれを動作させるためにしようとしているすべてのエラー – bendewey

関連する問題