1

これを使って発信リンクを新しいウィンドウで開くのですが、対象が画像の場合、画像のaltをタイトルとして表示したいです。

 $("a[href*='http://']:not([href*='"+location.hostname+"']),
    [href*='https://']:not([href*='"+location.hostname+"'])")
            .addClass("external")
            .attr("target","_blank")
            .attr("title", "Open link in new window");
        });

これを .attr("title") に追加する最も簡単な方法は何ですか?

4

2 に答える 2

1

がアンカーの内側にある場合は、次の<img>ようにすることができます。

$("a[href*='http://'], a[href*='https://']").not("[href*='"+location.hostname+"']").each(function() {
  var $this = $(this).addClass("external").attr("target","_blank");
  var img = $this.children('img[alt]');
  $this.attr("title", img.length ? img[0].alt : "Open link in new window");
});

ここにはいくつかの変更があります。現在のセレクターは<a>最初のhttp://チェックのみを調べますが、チェック内のすべての要素を調べますhttps://。これにより、はるかに効率的になります。次に、現在の要素に<img>内部があるかどうかを確認します。内部がある場合はalt、それを使用する属性を持っています。そうでない場合は、デフォルトのタイトルを付けます。

または、別の方法として、持っているものを使用して (セレクターを効率的に変更します)、その後、画像を含むアンカーのタイトルを次のように設定します。

$("a.external > img[alt]").each(function() {
  $(this).parent().attr("title", this.alt);
});
于 2010-08-03T12:09:01.060 に答える
0

外部ウィンドウに表示したい画像にリンクしているように聞こえます。img画像をアンカー タグのターゲットとして使用すると、要素ではなく実際の画像ファイルが参照されるため、alt関連付けられたタグはありません。一方、画像がアンカーに含まれていて、それをクリックして新しいウィンドウを開く場合は、@Nick のソリューションでうまくいくはずです。.

于 2010-08-03T12:12:31.727 に答える