javascript - jQuery 列表检查 .each 仅适用于最后一项
问题描述
我有一个地址列表,我想检查该列表中是否也存在输入值的相同地址。问题出在我的each
功能上,它似乎只检查最后一个li
而不检查其余部分。
我见过类似的问题,但对我的功能没有任何作用。
这是HTML:
<ul>
<li><span class="savedLocDropTxt2">LA Office</span><br>
<span class="savedDropAdd2">125 Pico Blvd, Santa Monica, CA 90404, USA</span>
</li>
<li><span class="savedLocDropTxt2">NY Office</span><br>
<span class="savedDropAdd2">1001 West 31st Street, NY, New York 10001, USA</span>
</li>
<li><span class="savedLocDropTxt2">NY Loft</span><br>
<span class="savedDropAdd2">1453 West 21st Street, NY, New York 10001, USA</span>
</li>
</ul>
<h4>Start Address</h4>
<input class="startAddInput2" style="width: 250px;" name="StartAddress1" type="text" value="1453 West 21st Street, NY, New York 10001, USA">
<br>
<span class="savedLocTxt2"></span>
这是JS:
$('.savedDropAdd2').each(function(){
if($(this).text() == $(".startAddInput2").val()) {
$('.savedLocTxt2').text('exists');
}
else {
$('.savedLocTxt2').text("doesn't exist");
}
});
这是jsfiddle
如果您将最后一个地址作为文本字段值属性,它只会显示列表中存在的地址,它应该说存在于列表中也存在的任何地址值。
解决方案
There is nothing wrong in using text()
method here. The problem is how to break out of the each
loop after you have successfully found a match.
if you don't do this and a match is found as any other element apart from the last element, the code will always return "doesn't exit"
. This is because the last element will always be tested for even if a match is found among the other other elements.
To break out of the each
loop immediately after finding a match, simply return false
and the problem is solved.
$('.savedDropAdd2').each(function() {
if ($(this).text() === $('.startAddInput2').val()) {
$('.savedLocTxt2').text('exists');
return false;
} else {
$('.savedLocTxt2').text("doesn't exist");
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul>
<li>
<span class="savedLocDropTxt2">NY Loft</span><br>
<span class="savedDropAdd2">1453 West 21st Street, NY, New York 10001, USA</span>
</li>
<li>
<span class="savedLocDropTxt2">LA Office</span><br>
<span class="savedDropAdd2">125 Pico Blvd, Santa Monica, CA 90404, USA</span>
</li>
<li>
<span class="savedLocDropTxt2">NY Office</span><br>
<span class="savedDropAdd2">1001 West 31st Street, NY, New York 10001, USA</span>
</li>
</ul>
<h4>Start Address</h4>
<input class="startAddInput2" style="width: 250px;" name="StartAddress1" type="text" value="1453 West 21st Street, NY, New York 10001, USA"><br>
<span class="savedLocTxt2"></span>
推荐阅读
- python - Pydantic:数据类与 BaseModel
- azure - 将 AzureDevops 指向本地存储库管理器 (Nexus)
- ruby-on-rails - Ruby/Rails - Shrine::Error(存储:存储未在 ImageUploader 上注册)
- javascript - 当使用 vanilla javascript 加载图像时
- asp.net-core - 如何管理 SelectList 中 ViewData 的异常?
- css - 当三栏页脚转换为一栏页脚时,链接不起作用
- tabulator - 如何以编程方式更改 Tabulator 中以编程方式插入的行的单元格值?
- javascript - 为什么从未调用 Spawn()?
- javascript - 如何在 JavaScript 中编写象棋象棋运动
- visual-studio-code - 对于 VS Code 扩展,是否可以在“变量”视图中显示自定义内容?