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

不要使用 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元素的事件。哪个没有定义。
于 2011-10-27T15:56:52.193 回答
0
$('img').live('click', function () {
    $(this).closest('a').click();
});
于 2011-10-27T16:09:32.070 回答
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 回答