使用jQuery获取附近<h3>的内部文本

时间:2016-02-03 15:44:39

标签: jquery

我正在尝试使用类<h3>获取"grid-block__title"的内部文本/值(据我所知?)当前位于我需要启动的元素之上({{1标识为<p>的}。我该怎么做才能正确?我的缩写标记看起来像这样:

addToCartMessageParagraph

我试过了..

  • <div> <h3 class="grid-block__title">...</h3> <h3 class="grid-block__description">...</h3> <h3 class="grid-block__description">...</h3> <form> <select>...</select> <span>...</span> <button>...</button> <input>...</input> <input>...</input> <p id="addToCartMessageParagraph" class="js-item-added js-hidden ...">...</p> </form> </div> undefined
  • $('#addToCartMessageParagraph').closest('h3[class="grid-block__title"]').val(); undefined
  • $('#addToCartMessageParagraph').closest('h3').val(); undefined
  • 我相信我也尝试了$(this).find('.js-item-added').closest('h3').val();命令,并且Chrome调试器中的不可用

如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:1)

您可以获取最接近的form祖先元素,然后使用h3.prevAll()方法获取上一个.siblings()元素(因为form / h3元素是兄弟姐妹):

$('#addToCartMessageParagraph').closest('form').siblings('h3.grid-block__title').text();

或:

$('#addToCartMessageParagraph').closest('form').prevAll('h3.grid-block__title').first().text();

您的尝试不起作用的原因是因为h3元素不是#addToCartMessageParagraph元素的祖先。 .closest()方法将遍历DOM树并过滤祖先元素。解决方案是选择最接近的form祖先,然后获取兄弟h3元素(因为h3 / form元素是兄弟姐妹)。

或者,如果包装器div元素具有类(例如.wrapper),那么您可以简单地遍历DOM并选择它,然后选择后代h3元素:

$('#addToCartMessageParagraph').closest('.wrapper').find('h3.grid-block__title').text();
pousrse的

,如果它始终是最接近的div祖先,你可以根据元素类型选择它:

$('#addToCartMessageParagraph').closest('div').find('h3.grid-block__title').text();

答案 1 :(得分:0)

最简单的方法是找到最近的div并从那里遍历如下。

$('#addToCartMessageParagraph').closest('div').find('h3.grid-block__title').text();

演示https://jsfiddle.net/d8ktmbmp/