2011-07-18 19 views
1

私はページ上のすべてのリンクを読み込み、リンク拡張子が '.png'で終わるかどうかを確認しようとしています。そうであれば、そのリンクがクリックされたときに、その画像をつかみ、 'test'クラスでdivに追加したいと思います。リンクが '.png'で終わらない場合は、それを無視して正常に開きます。jQueryを使用してリンクの拡張子を確認してください

<a href="image01.png">Image 01</a> 
<a href="image02.png">Image 02</a> 
<a href="http://www.google.com/">Page</a> 
<a href="image03.png">Image 03</a> 

<div class="test"></div> 

を...と、これは最初のリンクがクリックされたときにマークアップは次のようになりべきかです::

これは、マークアップで、あなたもjsFiddleにそれをつかむことができ

<a href="image01.png">Image 01</a> 
<a href="image02.png">Image 02</a> 
<a href="http://www.google.com/">Page</a> 
<a href="image03.png">Image 03</a> 

<div class="test"> 
    <img src="image01.png" /> 
</div> 

ありがとう!

答えて

2

は、私たちが必要とする

$('a[href$=".png"]').click(function(e) { // nice one ChristopheCVB 
    $('.test').append($("<img>", {src: this.href})); // neater than "<img src='"+...+">" 
    e.preventDefault(); // should be enough 
}); 

Demo here

次固定の完全な、非常にエレガント(私見)掲載例、エラーの組み合わせや他のもので試してみてください画像が既にあるかどうかを確認するテスト...

+0

ありがとうmplungjan、私は@ ShankarSangoliが完全なソリューションの最初の1つだったとは言いましたが、受け入れられた解決策としてあなたの回答を選択しました。 – Klikerko

+0

私はもう一方がよりエレガントだったので、私は結合することを決めました。たとえば、文字列連結の代わりにsrc:this.hrefなど - すべてのユーザーがソリューションを編集して、以前よりも互いに似ているようにしました – mplungjan

2

ここでは、この

$("a[href$='.png']").click(function(e){ 
    e.preventDefault(); 
    $(".test").append("<img src='"+this.href+"' />"); 
}); 
+0

+1、なぜあなたはボーですか?あなたが既に 'preventDefault()'を呼び出しているので、 'false'を返しているthering? –

+0

これは必須ではありませんが、デフォルトの動作を防止したい場合は、アンカーのクリックに対して常にfalseを返します。 – ShankarSangoli

+0

それは問題ありませんが、 'preventDefault()'はすでにそれを行います。しかし、jQueryハンドラから 'false'を返すことで、イベントがいつでもあなたが望むものではないかもしれないコンテナチェーンのバブリングを防ぐことができます:) –

関連する問題