【问题标题】:Jquery when i click on img it behaves like link (triggering link)当我单击 img 时,Jquery 的行为类似于链接(触发链接)
【发布时间】:2011-10-27 15:54:31
【问题描述】:

我有一个问题,我有一些 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');
})

我知道这是不正确的,但我想你得到了图片,谢谢你的帮助。

【问题讨论】:

  • 为什么不能把图片放到链接里?
  • 来自 OP 的引述:“。我无法将图像放在链接中,不要问为什么 :)。”
  • 总是挑战假设——如果没有别的动机。

标签: jquery click eventtrigger


【解决方案1】:

不要使用 jQuery,只需将结束 &lt;/a&gt; 标记移动到 &lt;img&gt; 标记的右侧:

<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 事件。哪个没有定义。

【讨论】:

  • 是的,你说得对,但是我如何通过点击图片来模拟点击链接?
  • @Mr.Sam 这是我回答的第二个代码块。单击链接的默认行为是更改位置,这是使用(例如)location.href = "http://newurl";
  • 谢谢,但我一直在寻找的东西不仅可以重定向页面,还可以触发链接……但无论如何还是谢谢
  • @Mr.Sam 触发链接 == 重定向页面。即使链接包含书市 (javscript:..) 或仅包含哈希 (#notleaving),页面也不会重定向,并且会跟随链接,就像您在跟随链接一样。
【解决方案2】:
$('img').live('click', function () {
    $(this).closest('a').click();
});

【讨论】:

  • 哇,我不得不告诉你,这正是我想要的,非常感谢你,伙计......你拯救了我的一天......保重
【解决方案3】:

实际上,这看起来应该可行。请注意 prev 是一个函数。

或者,你可以做类似的事情

window.location = link.attr('href');

【讨论】:

    【解决方案4】:

    你可能会侥幸逃脱

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

    【讨论】:

      【解决方案5】:

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

      $(".myclass").click(function(){ //做东西 })

      【讨论】:

      • 能否请您说得更具体一些,因为我认为您有一些想法……我的意思是我喜欢这个替代方案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多