jquery - jquery select all input with class给出错误的结果?
问题描述
我试图
在迭代后读取类 form-elementNameInput 的所有输入:
<li class="liClass"><div class="containerClass">
其中有 2 个(text1 和 text2)
出于某种原因,我从其中一个按钮中得到了错误的结果,我不知道为什么?
我也试过
$(this).first(".form-elementNameInput").text();
完整代码:
function readInputText(){
var elementText;
$('li.liClass>div.containerClass').each(function(){
elementText = $(this).first("input.form-elementNameInput:text").text();
console.log("#" + elementText + "#");
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ol>
<li class="liClass">
<div class="containerClass">
<input type="hidden" id="typeSave" name="typeSave" value="" />
<div class="form-group row">
<div class="col-xs-2">
<input type="text" class="form-elementNameInput" aria-describedby="inputGroup-sizing-sm" value="text1"></input>
</div>
<div class="col-xs-2">
<button class="btn btn-primary" id="btn_sel">
<i class="fa fa-home"></i>
<span style="width:3em;">
</span>Select Type
</button>
</div>
</div>
</div>
<li>
<li class="liClass">
<div class="containerClass">
<input type="hidden" id="typeSave" name="typeSave" value="" />
<div class="form-group row">
<div class="col-xs-2">
<input type="text" class="form-elementNameInput" aria-describedby="inputGroup-sizing-sm" value="text2"></input>
</div>
<div class="col-xs-2">
<button class="btn btn-primary" id="btn_sel">
<i class="fa fa-home"></i>
<span style="width:3em;">
</span>Select Type
</button>
</div>
</div>
</div>
<li>
</ol>
<div class="col-xs-1">
<button class="btn btn-primary" onClick="readInputText()">read text</button>
</div>
解决方案
你的 jQuery 不工作的原因是因为你正在使用.first()
,当你应该使用.find()
.first()
将始终返回调用它的集合中的第一个元素 -它不带参数。
// This will select the first element from $(this) - not $('.form-elementNameInput')
$(this).first('.form-elementNameInput').text();
.find()
将搜索调用它的集合的后代,并返回任何匹配的元素
// This will find the .form-elementNameInput element, and then find the first()
$(this).find('.form-elementNameInput').first();
此外,您正在.text()
尝试返回选择中的文本 - 如果元素是 a 或input
,您应该使用select
textarea
.val()
function readInputText() {
$('li.liClass>div.containerClass').each(function() {
let elementText = $(this).find("input.form-elementNameInput").first().val();
console.log("#" + elementText + "#");
});
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ol>
<li class="liClass">
<div class="containerClass">
<input type="hidden" id="typeSave" name="typeSave" value="" />
<div class="form-group row">
<div class="col-xs-2">
<input type="text" class="form-elementNameInput" aria-describedby="inputGroup-sizing-sm" value="text1"></input>
</div>
<div class="col-xs-2">
<button class="btn btn-primary" id="btn_sel">
<i class="fa fa-home"></i>
<span style="width:3em;">
</span>Select Type
</button>
</div>
</div>
</div>
<li>
<li class="liClass">
<div class="containerClass">
<input type="hidden" id="typeSave" name="typeSave" value="" />
<div class="form-group row">
<div class="col-xs-2">
<input type="text" class="form-elementNameInput" aria-describedby="inputGroup-sizing-sm" value="text2"></input>
</div>
<div class="col-xs-2">
<button class="btn btn-primary" id="btn_sel">
<i class="fa fa-home"></i>
<span style="width:3em;">
</span>Select Type
</button>
</div>
</div>
</div>
<li>
</ol>
<div class="col-xs-1">
<button class="btn btn-primary" onClick="readInputText()">read text</button>
</div>
推荐阅读
- php - 用于 JavaScript 的数组
- php - oxwall OW_EventManager bind and trigger
- python - Finding the depth of a particular node in a tree using recursion
- groovy - 如何使用 groovy 从 Soap 请求中读取值
- java - 在java中使用SqlBuilder创建动态查询
- c# - 投掷硬币,直到一侧连续下降 3 次
- javascript - 如何使用 officejs api 在 MS Word 中重新加载页眉和页脚
- python-3.x - 如何使用 IQR 从 DataFrame 中删除异常值?
- java - java代码为什么println 10?
- css - flex-direction:Safari 中的列