2016-05-26 3 views
0

私はリンクがいっぱいです。私は、特定のURLを探す底部に小さなjqueryを置いて、コンテンツのURLを見つけたらページの下部に小さなタグを追加するか、現在のページの正式なリンク(含まれていますメタで)一致する。これまでのところ、私はこれを持っています:ページ内のオブジェクトをループする、ページにキーが含まれている場合、値を追加する

<script type="text/javascript"> 
var obj = { 
    "apple.php":"apple_pixel_url", 
    "banana.php":"banana_pixel_url", 
    "carrot.php":"carrot_pixel_url" 
}; 

$.each(obj, function(key, value) { 
    $("html:contains(key)").append('<img src="'+value+'">'); 
}); 
</script> 

これは常に3つの値をすべて追加するので、私は明らかに何か間違っています。私は理想的には、 "a"リンクと一致したタグだけを見てみることにします

<link rel="canonical" href="CANONICAL_URL" /> 

これを行う最も良い方法は何ですか?

+0

ページはapple.php' 'のような複数の同様のURLを、持っている場合は何? – RomanPerekhrest

+0

その場合、私はそれを1回追加するだけです。 –

答えて

2

また、この構文を使用して、個々のリンクに追加することができます

$("a[href$='"+key+"']").append('<img src="'+value+'">'); 
+0

明らかにこの問題に対するより良いアプローチです。 –

+0

ありがとうございますrishabh! –

+0

私はリンクに追加したくないです、私は体に追加したいです。 –

2

「キー」が変数であるセレクタとして静的な文字列を渡しています。

$("html:contains("+key+")").append('<img src="'+value+'">'); 
+0

ああ、それは ""と解釈されていたので毎回正解でした。 –

1

それはあなたのJavaScriptで値を見つけることですので、それは常に3つのリンクを追加! href属性が<a>および<link>の要素にのみチェックしてください。

var obj = { 
    "apple.php":"apple_pixel_url", 
    "banana.php":"banana_pixel_url", 
    "carrot.php":"carrot_pixel_url" 
}; 
function load(){ 
    $.each(obj, function(key, value) { 
    if($("a[href='"+key+"'],link[href='"+key+"']").length > 0){ 
     $("body").append('<img src="'+value+'">'); 
    } 
    }); 
} 

<body onload="load()"> 
    <a href="apple.php">Apple</a> 
    <link href="carrot.php" /> 
</body> 

ここでフィドルです:https://jsfiddle.net/wjdo23kr/1/

+0

ああええ!いい視点ね。 –

+0

その問題は、正式なリンクタグが頭にあることです。 –

+0

@pg。完全なソリューションのための更新された答え。 –

関連する問題