javascript - 使用 jQuery.siblings() 找不到 <header> 标记

标签 javascript jquery

考虑以下标记(缩写):

<section>
  <header>
    <picture>
      <source>...</source>
      <img>...</img>
      <h1>someText</h1>
  </header>
  <div>
    <div>...</div>
    <div>
      <div>
        <ul>
          <li>
            <h4>...</h4>
            <p>...</p>
            <form>
              <p>
                <a href="...">...</a>
              </p>
            </form>
          </li>
        </ul>
      </div>
    </div>
  </div>
</section>

我目前正在使用.closest()函数从 anchor 标记开始遍历树。我执行此操作的代码是:

    var form = $(this).closest('p').closest('form');
    var detailPageH1 = form.closest('li').closest('ul').closest('div').closest('div').closest('div').siblings('header').children('h1').text();

每个.closest()调用有效,但是当我评估 .siblings('header') 时(及其背后的所有内容)它返回未定义...我很好奇,所以我也尝试了 .parent().children('header').siblings()[0]但都不起作用。

两个问题..

  • 为什么 jQuery 找不到我的 <header>标签?我好像没有漏掉什么元素?
  • 有没有比重复 .closest() 更好的方法来做到这一点?这么多次?

最佳答案

您找不到 header元素因为 closest()如果它认为合适,则返回自身,因此在您的情况下, closest('div') 的链调用只是返回第一个 div(ul 标签周围的那个),其中 header不是 sibling 。相反,我会尝试以下方法:

$(this).closest('section').find('header h1').text();

这将一路跳转到 section包含所有其他元素,然后 find()向下遍历到h1 header内,您可以从中获取文本。

$(function() {
  var $a = $('a').eq(0);
  alert($a.closest('section').find('header h1').text());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<section>
  <header>
    <picture>
      <source />
      <img />
      <h1>someText</h1>
     </picture>
  </header>
  <div>
    <div>...</div>
    <div>
      <div>
        <ul>
          <li>
            <h4>...</h4>
            <p>...</p>
            <form>
              <p>
                <a href="...">...</a>
              </p>
            </form>
          </li>
        </ul>
      </div>
    </div>
  </div>
</section>

关于javascript - 使用 jQuery.siblings() 找不到 &lt;header&gt; 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188078/

相关文章:

javascript - 如何使用 Jquery 检查 href 为 ="something"的 div 是否具有特定类

jquery - 子导航栏与 Twitter Bootstrap 一起折叠

javascript - 从响应对象中获取特定值

javascript - 是否有自动 jQuery 插件更新程序?

javascript - 将 html 元素添加到在 javascript 或 jquery 中动态创建的 div

Javascript 多重函数

javascript - jQuery AutoComplete 无法完成文本框

javascript - 为 AngularJS 导航编写自定义函数

javascript - 按日期排序并进行比较,在 React 中返回错误的顺序

javascript - 如何使用 jQuery 阻止按钮在 div 标签内切换?