我有一些嵌套的input
元素,并希望仅显示value
传递的某个query string
的元素。
整个查询字符串部分正在运行,我将其存储在一个值中,但我检测包含正确.main
字段的input
包装器的代码似乎已被破坏。
HTML
// multiple times the same row with different input values
<div class="main">
<div>
<div>
<input type="text" class="hidden" value="4">
<input type="text" class="hidden" value="4">
</div>
</div>
</div>
的jQuery
// value passed by string, for example 2:
var queryStringVal = 2;
$('.main').each(function() {
var inputFields = $(this).find('input');
inputFields.each(function() {
var inputFieldVal = $(this).getAttribute('value');
if (inputFieldVal == queryStringVal) {
console.log("Found input field with value " + queryStringVal);
$(this).closest('.main').show();
}
});
});
我已创建此 JS FIDDLE DEMO 来演示此问题。我该如何修复此问题并仅显示包含具有正确值的输入的.main
包装器?
答案 0 :(得分:4)
答案 1 :(得分:1)
试试这个:
$(document).ready(function() {
var queryStringVal = 2;
$(".main input").each(function(){
var value = $(this).attr("value");
if (value == queryStringVal)
$(this).closest(".main").show();
})
})
最终代码:
$(document).ready(function() {
var queryStringVal = 2;
$(".main input").each(function(){
var value = $(this).attr("value");
if (value == queryStringVal)
$(this).closest(".main").show();
})
})
.main {
display: none;
}
<div class="main">
<div>
<div>
<input type="text" value="2">
<input type="text" value="2">
</div>
</div>
</div>
<div class="main">
<div>
<div>
<input type="text" value="4">
<input type="text" value="4">
</div>
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
答案 2 :(得分:1)
这是使用filter()
$('.main').filter(function() {
return $(this).find('input').filter(function() {
return this.value == queryStringVal;
}).length;
}).show();
答案 3 :(得分:1)
我尝试this:
$(document).ready(function() {
var queryStringVal = 2;
$('input.hidden[value='+queryStringVal+']').closest('.main').show();
});
答案 4 :(得分:1)
您可以按其值filter输入
// value passed by string, for example 2:
var queryStringVal = 2;
$('.main input').filter(function(index, element) {
return element.value == queryStringVal;
}).closest('.main').show();
&#13;
.main {
display: none;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main">
<div>
<div>
<input type="text" class="hidden" value="4">
<input type="text" class="hidden" value="4">
</div>
</div>
</div>
<div class="main">
<div>
<div>
<input type="text" class="hidden" value="2">
<input type="text" class="hidden" value="2">
</div>
</div>
</div>
<div class="main">
<div>
<div>
<input type="text" class="hidden" value="3">
<input type="text" class="hidden" value="3">
</div>
</div>
</div>
&#13;