我有以下情况:
<div>
<ul class="select2-results" style="width: 400px;">
<li class="select2-results-dept-0 select2-result select2-result-selectable">
<div class="select2-result-label">
<span id="12345" class="null">
GBP
</span>
</div>
</li>
<li class="select2-results-dept-0 select2-result select2-result-selectable">
<div class="select2-result-label">
<span id="45678" class="null">
KPW
</span>
</div>
</li>
<li class="select2-results-dept-0 select2-result select2-result-selectable">
<div class="select2-result-label">
<span id="12345" class="null">
USD
</span>
</div>
</li>
</ul>
</div>
我需要从中选择货币。我正在尝试以下事情,但没办法:
assert $('UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable', 0..2)*.text() == ["GBP", "KPW", "USD"]
即使我无法处理这个:
assert $('UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable')*.size() == 3
虽然,我可以处理一个元素:
assert $('UL.select2-results').find("LI.select2-results-dept-0.select2-result.select2-result-selectable", 0).text() == "GBP"
任何帮助或建议都对我有益!谢谢!
答案 0 :(得分:3)
仅仅通过观察你的例子,你得到的回报是3 DIV
。看起来您需要更深入一点,在星号之前添加.find('span')
。
assert $(
'UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable',
0..3)*.text() == ["GBP", "KPW", "USD"]
变为
assert $(
'UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable',
0..3).find('span')*.text() == ["GBP", "KPW", "USD"]
答案 1 :(得分:1)
我不知道为什么@Gabriel的答案不起作用!我知道0..3存在问题,因为它会是0..2!但不是找到它最终工作:
assert $('UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable span')*.text() == ["GBP", "KPW", "USD"]
我很想知道是否有人可以解释为什么索引+使用find + *不能同时解决这个特定问题,或者是否存在与逻辑语法相关的问题。
答案 2 :(得分:0)
我认为您可以通过执行以下操作来简化您获取货币的方式:
$("div.select2-result-label").children("span")*.text() == ["GBP", "KPW", "USD"]
因为您已经在div上有类,所以您可以使用上面的选择器轻松访问它们,然后您可以获取子 span 元素并获取每个范围的文本。我希望这有帮助!