2

私は問題を抱えています、私はいくつかのliを手に入れました、それらの中に私はリンクと画像を持っています。私が欲しいのは、誰かが画像をクリックするとリンクがトリガーされることです。リンクに画像を入れることができません。理由は聞かないでください:)...基本的には次のようになります。

<li><a href="somelink">sometext</a><img src=""/></li>
<li><a href="somelink">sometext</a><img src=""/></li>
...

そして、私はこのようなことをすることを考えていました:

$(img).click(function(){
  var link = $(this).prev;
  $(link).trigger('click');
})

私はこれが正しくないことを知っています、しかし私はあなたが写真を手に入れたと思います、あなたの助けに感謝します。

4

5 に答える 5

4

</a>jQueryを使用せずに、タグの右側にある終了タグを移動するだけです<img>

<li><a href="somelink">sometext<img src=""/></a></li>
<li><a href="somelink">sometext<img src=""/></a></li>

HTMLを変更したくない場合は、次を使用します。

$('img').click(function(){
    location.href = $(this).prev().attr("href");
});


コードレビュー

  • $(img)-img定義されていません。意味:$('img')?(セレクターを使用して引用符を追加img
  • var link = $(this).prev;--prevはプロパティではありませんが、メソッドです。呼び出す必要があります:var link = $(this).prev()
  • $(link).trigger('click')。はすでにjQueryオブジェクトであるためlink、オブジェクトを別のjQueryオブジェクトでラップする必要はありません。使用する:link.trigger('click');
  • 欠陥のあるロジック:.trigger('click')デフォルトのブラウザの動作(リンクをたどる)をトリガーしないため、ページをたどることはありませんがclick、要素のイベントを呼び出します。定義されていません。
于 2011-10-27T15:56:52.193 に答える
0

実際、それはうまくいくはずです。prevは関数であることに注意してください。

または、次のようなことを行うことができます

window.location = link.attr('href');
于 2011-10-27T15:57:04.507 に答える
0

あなたはおそらく次のようなもので逃げることができます

$(img).click(function()
{   
      var link = $(this).prev();   
      window.location.href = link.attr('href'); 
});
于 2011-10-27T15:58:02.393 に答える
0

アンカーリンクと画像の両方にcssクラスを設定し、クラス名セレクターを使用してクリックイベントをフックすることができます

$( "。myclass")。click(function(){//何かを行う})

于 2011-10-27T16:00:13.140 に答える
0
$('img').live('click', function () {
    $(this).closest('a').click();
});
于 2011-10-27T16:09:32.070 に答える