【发布时间】:2022-11-14 21:27:31
【问题描述】:
我正在尝试从另一个元素中获取最接近的 div。我的用例:
我在 AJAXing 时使用微调器作为占位符。微调器仅受父 div 影响,这意味着我可以在一页上有多个微调器。
我想我可以为此重用一个函数,但我永远无法获得微调器 div。
我的例子:
<div>
<div>
<p></p>
</div>
<div>
<p></p>
</div>
<div>
<h4></h4>
<div></div>
<div></div>
</div>
<div id='wrapper'>
<div class='ajax_spinner'></div>
<div>
<h4></h4>
<div>
<button>
</button>
</div>
</div>
<div>
<h4>
</h4>
<div>
<button id='1659'>
3XL
</button>
<button id='1662'>
4XL
</button>
<button id='1650'>
L
</button>
<button id='1647'>
M
</button>
<button id='1644'>
S
</button>
<button id='1653'>
XL
</button>
<button id='1641'>
XS
</button>
<button id='1656'>
XXL
</button>
</div>
</div>
</div>
<div>
<button id='add_to_cart'>
Add to Cart
<div class='ajax_spinner'></div>
</button>
</div>
</div>
在上面的示例中,我有一个微调器,它在单击大小按钮时应该会影响相当大的区域(包装器 div)。但也有一个仅用于添加到购物车按钮的微调器。所以我永远无法确切知道我在哪里拥有 ajax_spinner。
我尝试了findSpinner 函数:
const findSpinner = (el) => {
let spinner = el.closest('#ajax_spinner')
spinner.length ? spinner : el.siblings('#ajax_spinner')
spinner.length ? spinner : el.parentsUntil('#ajax_spinner')
spinner.length ? spinner : el.parent('#ajax_spinner')
spinner.length ? spinner : el.parents('#ajax_spinner')
spinner.length ? spinner : el.find('#ajax_spinner')
return spinner.length ? spinner : null
}
el 在这种情况下是单击的 jquery 元素。如果我这样做let spinner = el.parent().parent().siblings('#ajax_spinner'),它显然会找到用于挑选尺寸的微调器。但我不能使用它,因为并非总是如此。
【问题讨论】:
标签: jquery