2011-09-13 10 views
2

私は編集できない外部JavaScriptプラグインを使用しており、サムネイル画像のリストをクリックして動作します。私は<a>で画像をラップしなければならなかったスタイリング目的のためにJquery performをクリックしてください<img>

if(img.parent("a").length == 0){ 
    img.wrap('<a />'); 
} 

は、私はこのJavaScriptのプラグインがアクションを呼び出すになり、私が挿入されている<a>のクリックを追加することができます方法はあります画像をクリックすると

仕事とエラーになりますしませんが、私はこれを試してみました:Too much recursion

$("#thumbs a").live("click", function(){ 
    $(this).find("img").click(); 
}); 
+0

あなたはimg自体のclickイベントに反応することができますか?プログラムでimgをクリックしたいと思う特定の理由はありますか? – Anthony

答えて

2

はい。それは、デフォルトでは0を返しますので、あなたが言うことができるよう

if(!img.parent("a").length){ 
    img.wrap('<a />').parent('a').bind('click', function() { 

     // ALL THE CODE!!! 

    }); 
} 

また

0

IMGSのクリックハンドラにe.stopPropagation();を追加します。

http://api.jquery.com/event.stopPropagation/

1

Too much recursionif (!something.length)は何かがおそらく無限に、何度も何度もループしていることを意味し、... if (something.length == 0)を言う必要はありません。あなたの現在のコードでは、<a><img>の親であるため、<img>のクリックイベントは親にバブルアップする<a>(Googleでは「イベントバブル」を検索します)。したがって、あなたのコードは基本的には「<a>をクリックして<img>をクリックしてから<a>(イベントバブリングのため)をクリックすると、コードが再び実行されます。

JavaScriptプラグインでイベントをイメージのクリックにバインドしている場合、画像をクリックするだけの理由でクリックイベントを親の<a>にバインドする必要はありません。 jQueryコードを含まずに、ユーザーが<img>をクリックしたときにまだ起こっていないことは何が必要ですか?

関連する問題