Jquery当我点击img它表现得像链接(触发链接)

时间:2011-10-27 15:54:32

标签: jquery click eventtrigger

我有一个问题,我有一些李,在他们里面我有一个链接和一个图像。我想要的是当有人点击图像时触发链接。我不能把图像放在一个链接中,不要问为什么:)...所以基本上它看起来像这样

<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');
})

我知道这不正确,但我认为你得到了照片,谢谢你的帮助。

5 个答案:

答案 0 :(得分:4)

不要使用jQuery,只需移动</a>标记右侧的结束<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')。由于link已经是jQuery对象,因此不必将对象包装在另一个jQuery对象中。使用:link.trigger('click');
  • 有缺陷的逻辑:.trigger('click')不会导致页面被跟踪,因为它不会触发默认的浏览器行为(在链接之后),而是调用元素的click事件。哪个没有定义。

答案 1 :(得分:0)

实际上,这看起来很糟糕。请注意,prev是一个函数。

或者,您可以执行类似

的操作
window.location = link.attr('href');

答案 2 :(得分:0)

你可以通过

之类的东西逃脱
$(img).click(function()
{   
      var link = $(this).prev();   
      window.location.href = link.attr('href'); 
});

答案 3 :(得分:0)

你可以为锚链接和图像设置一个css类,并使用一个类名选择器挂钩click事件

$( “MyClass的”)。单击(函数(){ //做东西 })

答案 4 :(得分:0)

$('img').live('click', function () {
    $(this).closest('a').click();
});