【问题标题】:simulate click when parent div is clicked单击父 div 时模拟单击
【发布时间】:2012-12-14 08:30:03
【问题描述】:

我正在尝试使用 jquery 在单击父 div 时触发对 <a> 标记的单击

对于这个结构

<div id="menu_container">

                <ul id="header_links_container">


                    <li class="header_link header_link_large border_box_1">
                        <a class="header_link" href="http://amazon.com">LINK 1</a>
                    </li>

                    <li class="header_link border_box_1">
                        <a class="header_link" href="http://google.com">LINK 2</a>
                    </li>


                    <div class="tbc"></div>

                </ul>

            </div>

使用这个

$('#menu_container').on('click', 'li.header_link', function(){
    console.log($(this));
    $(this).children('a.header_link').click();  
});

产生无限量的点击。我猜是因为当我触发 &lt;a&gt; 标签上的 click() 时,它的父 div 也收到了点击,所以它只是再次执行所有操作。

如何在单击父 div 时模拟对锚点的单击?尝试使用来自this SO post 的答案不起作用。

jsbin example

谢谢

【问题讨论】:

  • 你想做什么,把它记录下来?您可以通过其他方式实现相同的目标。您的问题非常明确(而且不可能),因此如果您尝试“我正在尝试做 X,这就是我尝试过的”,您可能会得到更好的帮助

标签: javascript jquery


【解决方案1】:

您可以使用Elements click method 代替 jQuery。

$('#menu_container').on('click', 'li.header_link', function(){
   console.log('clicked');
   $(this).find("a.header_link").get(0).click();
});

您也应该按照@Sushanth -- 的建议在您的计算机上试用它。

【讨论】:

  • 谢谢。 (0) 在 jquery get() 部分中表示什么?
  • .get(index) 从选择器返回的元素集中返回底层 HTML 节点元素。 .get(index) 返回的元素不再是 jQuery 对象,而是原始 HTML 节点,您可以使用纯 javascript 的 getElementById 等获得...所以当您在此对象上调用 click 事件时,您不会调用jQuery 的 click 事件,而不是您正在调用元素单击方法。 0 是索引。由于我们的选择器返回(或应该返回)一个且只有一个元素,我们可以自信地从中获取第一个值。 api.jquery.com/get
  • 这为我解决了同样的问题。我从来没有想过 jquery 是罪魁祸首。
【解决方案2】:

无法为锚触发点击事件,这样您就可以转到该特定来源..

您需要明确单击它才能使其以您期望的方式工作。

您可以尝试的最佳选择是使用window.location

试试这个

$('#menu_container').on('click', 'li.header_link', function(e){
   console.log('clicked');
   var loc = $(this).find("a.header_link").attr('href');
   window.location = loc;
});

这不适用于jsBin,因为它会尝试停止重定向。 在本地机器上试试 ​

【讨论】:

  • 我真的不明白您为什么将点击事件移至&lt;a&gt; 标记。当您单击&lt;li&gt; 时,它并没有真正做任何事情,不过谢谢!
  • 我想我误解了你的问题..检查更新的帖子
猜你喜欢
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 2016-12-14
  • 2017-04-03
  • 2019-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多