如何用jQuery获取激活状态的按钮数组并获取其上方文本?
解决方法:通过jQuery获取激活按钮对应的标题文本
没问题,咱们来搞定这个需求~首先得纠正你代码里的小问题,然后一步步实现目标:
原代码的问题点
你写的$('.btnp').active.toArray()是错误的:
- jQuery里要选择同时拥有
.btnp和.active类的元素,应该用复合选择器$('.btnp.active'),而不是先选所有.btnp再访问.active属性 - 另外,你的HTML结构里,按钮是对应div的下一个同级元素,用
closest("div")会找按钮的祖先div,这不符合你的需求,应该用prev()来获取前一个同级的div元素
正确实现代码
方式1:存入数组后遍历
先把激活的按钮转成数组,再逐个获取对应标题:
// 获取所有带.active类的.btnp按钮,转为原生DOM元素数组 const activeBtnps = $('.btnp.active').toArray(); // 遍历数组,逐个处理每个按钮 activeBtnps.forEach(btn => { // 找到按钮前一个同级的div,再获取里面的p.full-title文本 const titleText = $(btn).prev('div').find('p.full-title').text(); // 这里可以把文本存到新数组,或者做其他处理 console.log(titleText); });
方式2:jQuery链式遍历(更简洁)
如果不需要单独存按钮数组,直接用jQuery的each()方法遍历更方便:
$('.btnp.active').each(function() { // $(this)指向当前遍历的激活按钮 const titleText = $(this).prev('div').find('p.full-title').text(); console.log(titleText); });
验证逻辑
结合你给出的HTML结构:
<div> <p class="full-title">Welcome</p> </div> <button class="btnp">SELECT</button> <div> <p class="full-title">Hello</p> </div> <button class="btnp active">SELECT</button> <div> <p class="full-title">Hi</p> </div> <button class="btnp active">SELECT</button>
当第二个和第三个按钮带有.active类时,代码会分别输出Hello和Hi,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Suriya Karthikeyan
相关产品推荐
相关产品推荐

