模拟单击元素的单击元素的父元素的父元素的兄弟元素

Posted

技术标签:

【中文标题】模拟单击元素的单击元素的父元素的父元素的兄弟元素【英文标题】:Simulate click of an element that is a sibling of the parent of the parent of a clicked element 【发布时间】:2013-02-06 17:41:29 【问题描述】:

我想模拟一个元素的点击,它是被点击元素的父元素的父元素的兄弟元素。即li 中的 a 在 li 旁边,其中有 a.active。这不起作用:

JQUERY

$('li.product').click(function() 
    $('a.active').parent().parent().next().find(a).click();

        );

html

<ul>
 <li class="product"><li>
 <li class="product"></li>
 <li class="product"></li>
</ul>


<ul>
    <li id="">
    <div class="page">
    <a class="active" href="javascript:function Z()Z=""Z()">1</a>
    </div>
    </li>
    <li id="">
    <div class="page">
    <a class="" href="javascript:function Z()Z=""Z()">2</a>
    </div>
    </li>
</ul>

【问题讨论】:

你现在是 javascript:void();命令? 您的示例没有 &lt;li&gt; 与产品类。 好的,我把它从另一个列表中添加到代码中 【参考方案1】:

您在.find() 中缺少引号''

应该是这样的:http://jsfiddle.net/SbDKD/

$('a.active').parent().parent().next().find('a').click();

【讨论】:

【参考方案2】:

我会将点击监听器放在 a 标签上并使用 .parents() 函数来查找父 li,以便无论您有多深都能找到它。然后在下一个元素中找到 a 。

$('a').click(function() 
  $(this).parents('li').next().find('a').trigger('click');

);

唯一的问题是它们都会触发它们的后续元素。但如果你只有两个,它应该可以工作。

【讨论】:

【参考方案3】:

以下对我有用

$('li.product a.active').click(function() 
    $(this).parent().parent().next().find('a').click();
    return false;
);

假设我们有这样的 HTML:

<li class="product">
  <div class="page">
     <a class="active" href="javascript:alert('click 1')">1</a>
   </div>
</li>
<li class="product" onclick="alert('tickle')">
    <div class="page">
        <a onclick="alert('tickle me')" href="javascript:alert('click 2');">2</a>
    </div>
</li>

(HTML 中的内联 onclick 处理程序,当然只是为了方便测试)。

【讨论】:

以上是关于模拟单击元素的单击元素的父元素的父元素的兄弟元素的主要内容,如果未能解决你的问题,请参考以下文章

聚合物2 - 单击另一个时显示一个元素

如何找到具有相同类的父兄弟姐妹的下一个元素

选择 $(this) 元素的父级的兄弟姐妹

用css选择器 如何选择自己的父元素

如何在 vuejs 中隔离父元素和子元素之间的单击事件处理程序

js获取父级元素