当我单击按钮时,我想获取使用变量的h2值
var getClassName = $(this).closest('div').attr('class');
哪个给了我它的父类,现在我有我要获取其h2
的父类,所以我已经尝试了
var getH2Val= $('.'+getClassName+' h2').val();
哪个给了我未定义的值。
<div id="search-7" class="section-1">
<h2>Test head</h2>
<p>test paragraph</p>
<p><a class="testclass" href="#test2"><button>button</button> </a></p>
</div>
<div id="search-8" class="section-1">
<h2>Test head</h2>
<p>test paragraph</p>
<p><a class="testclass" href="#test2"><button>button</button> </a></p>
</div>
答案 0 :(得分:5)
您的closest()
逻辑是正确的。但是,您随后需要在该元素内的find()
中检索h2
。另请注意,h2
元素没有“值”。要检索其中的文本,请使用text()
。
最后请注意,您不能在button
中放置a
元素,因为嵌套的可点击元素在HTML中是无效的。因此,在下面的示例中,我删除了a
元素,因为它不是必需的。
$('button').click(function() {
var h2Text = $(this).closest('div').find('h2').text();
console.log(h2Text);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="search-7" class="section-1">
<h2>Test head #1</h2>
<p>test paragraph</p>
<p><button>button</button></p>
</div>
<div id="search-8" class="section-1">
<h2>Test head #2</h2>
<p>test paragraph</p>
<p><button>button</button></p>
</div>
答案 1 :(得分:1)
另一种与您的代码更相似的方法是获取父id
属性(因为它们在文档中应该是唯一的)。请注意,在选择器上使用class
属性不会确保您匹配唯一的元素。
$('button').click(function()
{
var parentID = $(this).closest('div').attr('id');
var h2Text = $('#' + parentID + ' h2').text();
console.log(h2Text);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="search-7" class="section-1">
<h2>Test head #1</h2>
<p>test paragraph</p>
<p><button>button</button></p>
</div>
<div id="search-8" class="section-1">
<h2>Test head #2</h2>
<p>test paragraph</p>
<p><button>button</button></p>
</div>