2010-12-10 3 views
0

における文の構文(JavaScriptのjQueryのに非常に新しい)JavascriptをjQueryの.each機能

はAN if文、具体的.each機能、その他の機能のコレクションを含めることができる場合は?はいの場合、実装に何か問題がありますか?

var string2 = "domain"; 
var mainpath = (window.location.href); 

if (mainpath.indexOf(string2)) { 

    $("#topnav a").each(function(){       
     var thishref = $(this).attr('href');  
     $(this).attr({href: thishref + '?lnkid=tnav'}); 
    }); 

    $("#nav a").each(function(){        
     var thishref = $(this).attr('href');  
     $(this).attr({href: thishref + '?lnkid=pnav'}); 
    }); 

} 

私は何をしたいページが(むしろCMSの開発スペース内部よりも)自分のドメインにある場合にのみ、if文の内部でコードを実行されます。 -お問い合わせ

+0

厳密に関連していないが、文は、例えば、他のステートメントが含まれていてもよい場合は、 'window.location.host' – Gareth

+0

アンに直接比較することができますブロック文には、0個以上の文のリストが含まれています。 –

答えて

0

ことができることを確認:それは簡単に以下のURLでだまさすることができます。あなたは基本的に正しいことをしています。提案:

が条件ならば、あなたと明示して、その条件付きでコードを実行するためにifを使用して完全に有効

if (mainPath.indexOf(string2) !== -1) {... 

} 
0

はい、何も問題ありません。

http://www.other.tld/?domain

0

ような何かを行います。あなたの状態に問題があるようですけど:

if (mainpath.indexOf(string2)) 

メインパス内の文字列2のインデックスは、実行からあなたのコードを妨げる0することができ、それはあなたが望むものは確かではありません。

このようなむしろテスト:提案として

if (mainpath.indexOf > -1) ... 
+0

この場合(window.location.hrefの出力が保証されているため)、これはドメインが「http」の場合にのみ発生します。言及する価値はありますが、特に問題はありません。 – Gareth

+0

@Gareth Granted、これはほとんどありませんこれまで誰も彼のドメイン名をhttpfooと呼んでいましたか?結局のところ、これは簡単に見落とされる失敗の原因になる可能性があるので、正しい方法でやり直すべきだと思いませんか? – aefxx

0

に、あなたはこのような各リンクにクエリを追加することができます。

$("#topnav a").each(function(){       
    this.search = 'lnkid=tnav';  
}); 

のhrefを取得関わる遠回しの必要はありません属性を追加し、それを元に戻します。

デモ:あなたの質問にhttp://jsfiddle.net/3ZpMz/1/

+0

ありがとう!私もコードのこの部分で苦労しました。私はなぜ、どのように動作するかを知りたがっているが、うまくいくと思う。 – Kat