2012-02-21 15 views
0

リンクをクリックするとhtmlコードブロックを生成しようとしています。私はページに同じリンク "返信"を数回持っています。しかし、私はクリックされたリンクの下にコードを生成したい。私は$(this)を使ってみましたが、うまくいきませんでした。ご協力いただきありがとうございます!より良い解決策があれば教えてください。また、参考のために、私はあなたがテキストを入力するためのテキストエリアを開く返信リンクをクリックするとYoutubeのように返信テキストエリアを作成しようとしています。jQuery:htmlブロックを最も近いクリックされたリンクに追加

サンプルコードは、あなたのJSのためにこれを試してくださいここSample Code

+0

をあなたのフィドルコードでMooToolsはに設定され、ライブラリを持っています。また、これは間違っています。 $( "。grid_11 underVideo")はunderVideoがクラスであるためです。 – Gregg

+1

jsFiddleに 'jQuery'を設定してもコードが動作しません。しかし、私は 'closest()'があなたが探しているものだと思います。また、なぜ '


'? – elclanrs

+1

セレクタとして.grid_11 underVideo "を使用しようとしました。そのセレクタは 'underVideo'タグを子として持つ' .grid11'クラスを探しています。あなたが思うセレクタは '' .grid_11.underVideo "' –

答えて

0

Demo

$(".reply").one('click', function (event) { 
    var html = "<div class='alpha grid_11 underVideo'><ul><li><textarea class='roundedCorners textAreaLabel' rows='4' cols='100' wrap='off' placeholder='Respond to this video...' name='CommentTextArea'></textarea></li></ul></div>"; 
    $(this).parent().after(html); 
    return false; 
}); 

ターゲット要素にクラス.replyがあるので、.normalText a:last-childの代わりにその要素を使用しました。

要素に「クリック」をバインドする代わりに、.oneが使用されます。 .oneを使用すると1回だけ起動し、複数のテキストエリアを追加できなくなります。

$(this)はクリックされた要素を指し、ここではa.reply要素です。 .parent()を使用するとDOMを移動し、親を選択します。spanです。もちろん.after(html)spanの後にhtmlを挿入します。

return false;は、どのようにこの程度の両方.preventDefault();.stopPropagation();

+0

ありがとう、アルパカ!これは動作します!解決方法を説明してくれてありがとう!私は別の質問がありましたか?新しく生成されたテキストエリアに機能を追加することはできますか? – Vish

0

提供されています:

$(".normalText a:last-child").bind('click', function (event) { 
     event.preventDefault(); 
     event.stopPropagation(); 
    $(this).parent().before("<div class='alpha grid_11 underVideo'><ul><li><textarea class='roundedCorners textAreaLabel' rows='4' cols='100' wrap='off' placeholder='Respond to this video...' name='CommentTextArea'></textarea></li></ul></div>");  
    }); ​ 

$(this)は、現在の要素を返します、あなたのHTMLを追加することができますので、.parent()はDOMで1つ上のレベルに移動します(.beforeの場合、それは先頭に追加です)

+0

とにかく、生成されたdivにさらに機能を追加できますか?つまり、生成された新しいテキストフィールドにフォーカスとぼかし機能を追加したいということです。 – Vish

+0

ご協力ありがとうございます!私の質問に戻すために時間を割いていただきありがとうございます。あなたのソリューションは機能しますが、@alpacaによって提案されたソリューションはより洗練されています。 – Vish

0

していますか?でも代わりにHREFの)(データの使用を検討し、それが動作する可能性があります:

http://jsfiddle.net/C3NNt/

関連する問題