2009-08-12 26 views
4

divを上に移動したときに画像を表示するには、prepend()関数を使用しています。どのように私は、画像を削除するには - すなわちプリペンドの反対が(何)ここjQuery - prependを元に戻す方法

は、コードは次のとおりです。

$("#hover-div").hover(
     function() { $("#image-div").prepend("<img src='images/arrow_redo.png' width='16' height='16' />"); }, 
     function() { $("#image-div").someFunction("<img src='images/arrow_redo.png' width='16' height='16' />"); } 
     ); 

someFunctionだけダミーです - 私は実際にそれが何を行うには期待していないのです。

+0

はあなたが添付/画像を作成するために、現在使用しているコードを提供することができ役に立てば幸いホバーイベント? – gnarf

+0

画像を追加するのではなく、画像を表示するのではなく、表示しないでください。 – MrHus

答えて

0
$("#image-div").prev().remove(); 

これは、前の要素を選択して削除します。

+1

-1 prevが前の兄弟を選択するため、これは間違っています。彼が選択したいのはimage-divの子です –

+0

彼はコードを書く前にこれを書いています。 remove()がトリガーされる場所を知らなかった。 – smack0007

1

prepend()を適用する前にノードの内容を変数に保存するとどうなりますか?

+0

これは、巨大な内容を持つ要素には適していません。 – rahul

+1

そうです。それで彼が最初にタグを追加すると、それはこのノードの最初の子であり、簡単に削除できることを意味します。 –

5

画像要素のIDがある場合は、単にremoveメソッドを使用できます。

$("#imgID").remove(); 
+0

これは動作しますが、画像オブジェクトへの参照を含むvarを格納する代わりに、別のセレクタを実行しているため、非効率的です。奇妙な機会に与えられれば、それは便利だろうが、何百/何千回もやってみると、差異に気づくだろう。 –

1

これはおそらく、それを処理するための最良の方法である - それ以外の場合はプラス私はそのは追加ボーナス(正ではないが)のように、とにかくあなたのための画像をプリロードする予定だと思い

var $img = $("<img src='images/arrow_redo.png' width='16' height='16' />"); 
$('#hover-div').hover(function() { 
    $('#image-div').prepend($img); 
}, function() { 
    $img.remove(); 
}); 

$(this).children().eq(0).remove(); 

は、最初の子を見つけて削除します。ただし、イベントが2回発生した場合は、画像以外のものも削除する可能性があります。

+0

+1 $(this).children()。eq(0).remove();私のために働くと私はグローバルを作成する必要はありませんでした。 =)ありがとうございます –

0

最初は本当に最優先のオプションがありますか? DOMのmanipualtionは高価なことができることに注意してくださいので、あなたが背景にあった画像を持つ、としたときにdiv要素をマウスオーバー、それをトグル良いかもしれないようにあなたが緩和するために何かできることは、これは

はサウンドが良いでしょう。以下のような

何か:

$("#MyDiv").mouseover(function(){ 
    $(this).find("img").toggle(); 
}); 

$("#MyDiv").mouseout(function(){ 
    $(this).find("img").toggle(); 
}); 

あるいは、代わりには、

.hover使用これはテストされていませんし、改善することをリファクタリングすることができますが、私はうまくいけばで取得していますかのアイデアを与えられました!

3

代わりのprependToを使用してみてくださいprependを使用して - 私は証明することができます:

var img; 
$("#hover-div").hover(
    function() { 
     img = $("<img src='images/arrow_redo.png' width='16' height='16' />").prependTo("#image-div"); 
    }, 
    function() { 
     img.remove(); 
    } 
); 

これはあなたが先頭に追加した後、それを操作できるように、あなたのイメージへの参照を保持する変数を作成することができます。

これはあなたが先頭に追加要素に属性を追加し、追加のために、後でそれらを見つけることができます

0

...

$("#hover-div").hover(
    function() { 
    $("<img src='image.png' />").prependTo("#image-div").attr('prepended','yes'); 
    }, 
    function() { 
    $("[prepended=yes]", "#image-div").remove(); 
    } 
); 
関連する問題