2012-03-29 7 views
0

は、私はこのようなアンカー要素で囲ま画像タグが見つからない場合はアンカーまたはハイパーリンクを無効にしますリンク。画像がない場合は、を無効にして、のリンクを無効にします。これを行う最善の方法は何ですか?画像は

更新

私は以下のmplungjanのソリューションを試してみましたが、それはうまくいきませんでした。私はjavascriptが仕事をすることができない場合jqueryを試してみて喜んでいます。

+0

私は自分のソリューションを(私が代わりのparentNodeの親を使用していた)、それは今で動作し、解決策の一つは、テキストとリンクを交換している他の画像を置き換える固定テキスト付き。 – mplungjan

答えて

2

このバージョンでは動作します:

<a href='$image'> 
    <img alt='No Image' src='$image' onError="this.parentNode.onclick=function() {return(false);}"> 
</a>​ 

あなたがここにアクションでそれを見ることができます:http://jsfiddle.net/jfriend00/2jb4G/

それとも、あなたが複数の場所で使用できる共通の機能を使用して:

個人的に
<script> 
function blockParentLink() { 
    this.parentNode.onclick = function() {return(false);} 
} 
</script> 

<a href='$image'> 
    <img alt='No Image' src='$image' onError="blockParentLink()"> 
</a>​ 

クリックをブロックするのではなく表示されない場合は、非表示にすると意味があると思います。

<a href='$image'> 
    <img alt='No Image' src='$image' onError="this.parentNode.style.display = 'none';"> 
</a>​ 

あなたはここで非表示版を見ることができます:http://jsfiddle.net/jfriend00/KVUUM/

+0

ありがとうございます!これは完璧に動作します。私は感銘を受けて。ありがとう:) –

+0

@BenHuh - 私はちょうど良いかもしれない別のオプションを追加しました。 – jfriend00

+0

"No Image"代替テキストを表示する必要があります。それが見つからない場合、私はイメージを隠していないのです。ありがとう、あなたはより多くの親指をする必要があります。 –

2

無効に=真の私のため

を動作しませんでしたこれらはなかった(のparentNodeを使用して!)のonclick

InnerHTMLのと:

<a href='#'><img alt='No Image' src='$image' 
    onError="this.parentNode.onclick=function(){return false}; 
    this.parentNode.innerHTML='Image not available'"></a> 

か、それを削除します。

<a href='$image'><img alt='No Image' src='$image' 
onError="var lnk= this.parentNode; lnk.parentNode.removeChild(lnk)"></a> 

またはそれを置き換える:

<a href='$image'><img alt='No Image' src='$image' 
onError="var lnk= this.parentNode; 
lnk.parentNode.replaceChild(document.createTextNode('No image'), lnk)"></a> 

DEMO

+0

上記はすべて動作しません。私のブラウザは 'this.parent'を検出していないようです。私はfirefox 10を使用しています。 –

+0

@BenHuh - 適切なjavascriptは 'this.parentNode'であり、' this.parent'ではありません。 – jfriend00

+0

@ jfriend00、返信いただきありがとうございます。コードを 'parentNode'に変更しました。しかし、それはあまりにも機能しませんでした。 DOMの初期化とは何か関係ありますか?ありがとう。 –

0

これは私があなたに有用である可能性が見つかった小さなコードの代わりにALERTの

<img src="http://www.someurl.com/image.gif" height="100" width="100" onerror="alert('Image missing')"> 

あなたはjqueryの関数を呼び出すことができていますハイパーリンクを削除します。あなたがJquery関数の助けを必要とするかどうか教えてください!

+0

他のユーザーにも役立つので、この関数を提示できれば好きだろう。 –