2010-11-28 10 views
0

はそうのようなp要素を考える: <p>Something</p>状態: <p>Something</p>は私がしたい、それ以上のユーザーマウスを置いたが、我々が持っている場合、代わりに<p><a href="blabla.org">go here</a></p>jquery単純なスワップp要素ですか?

マウスは、pエリアを離れた場合ホバリングした後、以前に戻ります。

このような簡単な例がありますか?

どうもありがとう、 MEM

+0

はあなたのすべてをありがとう...私はここに関連するAJAX呼び出しでいくつかの問題を抱えています...うーん...私は後で試してみましょう。あなたのコード例をお寄せいただきありがとうございます。私は最善を尽くします。 K.よろしく。 – MEM

答えて

2

や物事を追跡するために.data()を使用していますケンRedlerのオリジナルの簡単な修正:

$('p#someID').hover( 
    function() { 
     var $this = $(this); 
     $this.data('orig', $this.html()).html('<a href="blabla.org">go here</a>'); 
    }, 
    function() { 
     var $this = $(this); 
     $this.html($this.data('orig')).removeData('orig'); 
    } 
); 

http://www.jsfiddle.net/ambiguous/FhET2/1/

+0

あなたにこの1点を教えてください。 –

+0

非常に効率的な例です( '.data'の経験がない人物です)。私がjQueryを理解しているから、これはMEMが望むことを行うための最短/最速の方法です。 +1これも。 – ClarkeyBoy

+0

@mu:私はあなたを信じています。私はいつかこれを試してみる必要があります(データ属性と '.data()'を使って)。私は年齢のためにそうすることを意味してきましたが、試みるために非常に忙しい仕事の狩猟やゲームでした。 – ClarkeyBoy

1

更新:@Phrogzが指摘するようには、私は質問の意味の一部を逃しました。閉鎖での状態をキャプチャするかdata()を使用しての提案は良いものですが、ここでは(可動部分の面白い数と)別の方法があります:

span.hide { 
    display: none; 
} 

$(document).ready(function(){ 
    $('p#someID').hover( 
    function() { // on mouseEnter 
     $(this) 
     .contents() 
     .wrap('<span class="hide"/>') // wrap 'n' hide 
     .end() // back to 'this' 
     .append('<a href="blabla.org">Fascinating Link!</a>'); // add link 
    }, function() { // on mouseLeave 
     $(this) 
     .find('a') 
     .remove() // kill the anchor 
     .end() // back to 'this' 
     .find('span.hide') // the wrapper 
     .contents() // the wrapped 
     .unwrap(); // kill the wrapper, leaving its contents 
    }); 
}); 

これはそうのようなスタイルを想定しています更新例:これは、すべてのテキストを置き換えますhttp://www.jsfiddle.net/redler/HAGzH/1/

+0

私は、元のテキストをアンカーに置き換えて元のテキストに戻すことが要求されたと考えています。 (内容を閉じるか '.data()'が適切と思われます) – Phrogz

+0

Phrogz、そうですね。私は更新中です。 –

+0

ハァッ?だから、閉じるタグなしの/を使ってスパンを終了できますか?私は ''のような意味ですか?それは私にとってのニュースです... – ClarkeyBoy

0
$('p#IDHERE').hover( 
    function(){ // on mouseEnter 
     $(this).contents().replaceWith('<a href="blabla.org">go here</a>'); 
    }, 
    function(){ // on mouseLeave 
     $(this).contents().replaceWith("something"); 
    } 
); 

+0

私が理解しているところでは、MEMはマウスの元のテキストを置き換えて、新しいテキストをマウスのアウト/アウトの元のテキストに置き換えたいと思っています - したがって、2番目のreplaceWithコールは全く同じテキストを持つ必要があります。そのことを考慮に入れてこれを簡単に変更することは許されますが、これに合わせてあなたの例を調整したいかもしれません。 – ClarkeyBoy

関連する問題