我有一组基于数据库输出的表单字段。加载页面时,将使用数据库中的值填充字段。
基本上我想要做的是根据输入值控制div的.show()。hide()。如果它更大> 0应该比div显示。
每个输入都有一个类“event”,所以我使用Starts With Selector来定位输入并处理if()语句,但是在这个事实之后我遇到了各个元素的目标问题。
if ($('input[class^="event"]').val() > 0) {
$(this).parent().show();
}
我的基本($('input [class ^ =“event”]')。val()> 0)如果我发出alert();在它上面,但正如我所说,在那之后对元素的定位对我来说不起作用。
编辑 - 按要求,HTML
<div class="formbox Open sept25_morning"><input name="newsletter" value='#POPULATED_FROM_DB' class="event"/><strong>Good 'ol Hockey Game<br />
9:00 am - 11:00 am</strong><br /> </div>
<div class="formbox Open sept25_morning"><input name="newsletter" value='#POPULATED_FROM_DB' class="event"/><strong>Event #2<br />
9:00 am - 11:00 am</strong><br /> </div>
答案 0 :(得分:4)
这实际上取决于您运行if语句的上下文,如果是在页面加载时,您可以尝试这样的事情:
$('input[class^="event"]').each(function() {
if($(this).val() > 0) {
$(this).parent().show();
}
});
答案 1 :(得分:1)
如果我正确理解你的问题,你想选择一个以"event"
开头的类的所有输入,然后如果该值大于零则显示它们的父类?
您可以像Scoobler的回答一样使用.each
,或者像下面的.filter
使用{/ 1}}:
$('input[class^="event"]')
.filter(function () {
return $(this).val() > 0;
})
.parent()
.show()
;
答案 2 :(得分:0)
你可以这样做:
$("input.event").each(function(){
if ($(this).val()> 0) {
$(this).closest("div").show();
}
});
答案 3 :(得分:0)
val
方法仅返回第一个输入的值。要检查每个输入,您必须使用each
循环:
$('input[class^="event"]').each(function () {
var $this = $(this);
if ($this.val() > 0) {
$this.parent().show();
}
});
另外,对于它的价值,我可以发誓有一个基于输入值的jQuery选择器,但我在文档中找不到类似的东西。可能有一个插件或其他东西。
修改强>
此外,根据您的HTML,您看起来不需要那么复杂的选择器。您可以使用input.event
或其他东西。