0

私がやろうとしていること:

jQuery は次のすべてをチェックします。<div class="message-body">

ただし、: という別の div<div class="message-body">も選択されます。

コードは意図したとおりに機能しますが、同様の名前の他の divが含まれています。

jQuery がこれらの他の要素を選択しないようにするにはどうすればよいですか?

例はここで見ることができます: http://jsfiddle.net/Z5HJE/

上の画像はリンクとして機能しないでください。

一番下の画像だけがリンクとして機能します。

jQuery の経験はまったくありませんが、サイトにはこの単純な関数が必要でした。

読んでくれてありがとう。

4

3 に答える 3

1

jQuery は、指定したとおりに実行します。

.message-bodyすべての要素を反復するときは、それらすべてに対してそれを行う必要があります。

おそらく質問のスペルが間違っていることに気付いた後、あなたの場合の問題は、すべての div を反復処理してからimg、位置に関係なくすべてのタグを反復処理することです。これを試してみ$('.message-body img')てください。最初のeachループでは、両方は必要ありません。

コード :

   $('.message-body img').each(function ()
   {
      var currImg = $(this);
      currImg.wrap("<a target='_blank' href='" + currImg.attr("src") + "'/>");
   });
于 2012-11-27T06:50:34.307 に答える
0

これはうまくいくでしょう:)

 $(function ()
    {
       $('.message-body').each(function ()
        {
           $(this).find('img').each(function ()
            {
                var currImg = $(this);  // cache the selector
                currImg.wrap("<a target='_blank' href='" + currImg.attr("src") + "'/>");
            });
        });
    });​

http://jsfiddle.net/Z5HJE/2/

于 2012-11-27T06:54:14.727 に答える
0

内部にimgタグを取得する必要があると想定している<div class="message-body">ので、javascriptコードを次のように変更できます。

$('.message-body').each(function ()
{
   $(this).find('img').each(function ()
   {
      var currImg = $(this);  // cache the selector
      currImg.wrap("<a target='_blank' href='" + currImg.attr("src") + "'/>");
   });
});
于 2012-11-27T06:54:40.277 に答える