2017-05-13 9 views
0

私はこの機能の範囲で何かが欠けている、私は自動的に画像にクラスを追加しますが、テキストはそれらの周りに正しくラップされないようにアライメントを変更しません。私は単純に$( "img")を使うことはできません。attr( "align"、 "left");それはページ上のすべてのイメージを変更するので、コンテキスト '' img 'を使用していると言っていましたが、これは私が思うように動作していないし、絶対に何もしません。jQueryとこのスコープの範囲

どのように私はそれぞれのimgを関連付けられたクラスに合わせて変更できるか知っていますか?それがなぜ機能するのかに関するボーナスポイント。

編集:codepenデモ

+0

問題は、画像の配置を変更していない「この」問題があるなしで、それが正常に動作します私が現在行っている方法では "this"を使用して何も選択せず、 "this"を使用しないと、ページ上のすべてのイメージタグを選択して再配列します。したがって、50個のimgタグがある場合、最後のタグが見つかった場合でも、すべてのタグが一列に並べられます。 –

+0

クラス識別子を使用して$( 'img.alignleft')のようにattrを追加することができます。attr( 'align'、 'left');私が試した最初のことだったalignrightクラス – rajthakur

答えて

2

あなたのためにその参考になっ思います。このような何か:

function align_image(){ 
 
    console.log("func called"); 
 
    if ($(this).hasClass('alignleft')) { 
 
     $(this).attr("align","left"); 
 
    } 
 

 
    if ($(this).hasClass('alignright')) { 
 
     $(this).attr("align","right"); 
 
    } 
 
} 
 

 
$('img').each(align_image);

コメントで示唆したように(および他の回答で)、あなたも同じことを達成するために、特定のjQueryのセレクタを使用することができます。

$('img.alignleft').attr("align","left"); 
 
$('img.alignright').attr("align","right");

最後に、w3schoolsによれば、i mg align属性は廃止され、代わりにCSSプロパティを使用する必要があります。このような何か作業をする必要があります:

img.alignleft { 
 
    float: left; 
 
} 
 

 
img.alignright { 
 
    float: right; 
 
}

を私は、これは、すべての角度をキャプチャしたいと考えています。

+0

これはすべての画像を繰り返し、各クラスをチェックします。ちょっとしたショートカットが必要な場合は、 $( 'img.alignleft')。attr( "align"、 "left")と$( 'img.alignright')。attr( "align" 、 "右")。これにより、すべてのimgタグのalign属性がalignXクラスで設定されます。もちろん、これはCSSスタイルシートでも可能です。 – pacifier21

+0

前にこの方法を見たことはありませんが、動作します!ありがとう! –

+0

それは素晴らしいです!私はそれがうれしい!サイドノート:私は実際に私のコメントに示唆されているセレクタを使用することをお勧めします。答えに記載されているメソッドは、元のロジックに近いものです。セレクタは、単一の関数呼び出しでいくつかのDOM要素を操作するより簡潔な方法を提供します。これはjQueryの最大の強みの1つです。がんばろう! – pacifier21

0

これを試してみてください。私はあなたが画像のそれぞれを反復処理することができると思う、とイテレータ関数は「この」を参照してIMG DOM要素を指し

function align_image(){ 
    console.log("func called"); 
    if ($('img').hasClass('alignleft')) { 
    $(this).attr("align","left"); 
    } 

    if ($('img').hasClass('alignright')) { 
    $(this).attr("align","right"); 
    } 
} 
align_image(); 
+0

と同様に、私はそれが現在聞いている画像を選択してそれを変更すると思った。この場合、「これ」が何であるかは分かりません。 –

+0

デモをご提供いただければ幸いです。 –

+0

私はただちに1つを得るでしょう –

0

あなた活用フィルタ方式あなたの要素を見つけて、このようなATTRを追加する:

$("img").filter('.align-right').attr("align","right") ;       
$("img").filter('.align-left').attr("align","left") ; 

See here