0

ここで要素の挿入タスクを完了するのに問題があり、何時間も費やしています。

ユーザーがボタンをクリックしたときに、クラス名で要素を挿入しようとしました。スクリプトにはcssのセットアップもあります。私の問題は、最初の要素だけが css プロパティを持ち、残りは持たないことです。誰でもそれについて私を助けることができますか? 本当にありがとう!

Jクエリ

  //when users clicks the button

   var imgForClass = $("<img src='images/anim.gif' class='imgAbs'>");

   var cssProp = {'position':'absolute',
                       'z-index':99,
                       'top': topPos,  //topPos is the position that the element I want to attach to.
                       'left': leftPos //leftPos is the position that the element I want to attach to.
            }

   //detect if the element has id of 'cons'
   if($element.is('#cons'){                
               imgForClass.insertBefore('.conElement');
               imgForClass.css(cssProp) 
    }

HTML

<div>
<img src='a.jpg'/>
<img id='cons' src='b.jpg'/>
</div>      

//the new element will be inserted here but only the first element has css property(z-index...etc)
<div class='conElement'>
<img src='b.jpg'/>
</div>      

//the new element will be inserted here but has no css property(z-index...etc)
<div class='conElement'>
<img src='b.jpg'/>
</div>      

//the new element will be inserted here but has no css property(z-index...etc)
<div class='conElement'>
<img src='b.jpg'/>
</div>      

//the new element will be inserted here but has no css property(z-index...etc)
<div class='conElement'>
<img src='b.jpg'/>
</div>   


...more <div>         
4

2 に答える 2

1

ここでの問題は、insertBefore() メソッド呼び出し後の imgForClass 変数が、新しく挿入されたすべての img タグへの参照になることを期待していることだと思います。最初のものへの参照のみを保持していると思います。したがって、おそらく次のようなものが役立ちます

if($element.is('#cons'){                
               imgForClass.insertBefore('.conElement');
               $('.imgAbs').css(cssProp);
} 

余談ですが、同じ ID を持つ複数の要素をページに配置することはお勧めできません。

<img id='cons' src='b.jpg'/>
于 2012-09-14T02:30:57.987 に答える
0

これでうまくいくと思います:

if($element.is('#cons'){                
    imgForClass.insertBefore('.conElement').css(cssProp);
}
于 2012-09-14T02:41:15.820 に答える