2011-04-19 40 views
2

我有一组基于数据库输出的表单字段。加载页面时,字段将填充来自数据库的值。

基本上我想要做的是根据输入值控制div的.show().hide()。如果它比div应该显示的更大> 0。

每个输入都有一个类“事件”,所以我使用Starts With Selector来定位输入并处理if()语句,但是我遇到了单个元素定位后的问题。我的基本($('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 />&nbsp;</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 />&nbsp;</div> 
+0

会帮助,如果你可以发布你的HTML – JohnP 2011-04-19 15:49:46

+0

我们可以看到一些HTML – 2011-04-19 15:50:13

+0

好吧添加了HTML。基本$(this).parent.show();正在为我在网站的另一部分工作。这只是特定的开始与选择器的目标是让我难住。 – 2011-04-19 15:53:22

回答

4

这真的取决于你正在运行的情况下你的if语句,你可以尝试这样的事情,如果它是在页面加载:

$('input[class^="event"]').each(function() { 
    if($(this).val() > 0) { 
     $(this).parent().show(); 
    } 
}); 

Example here

+1

是的,为了他想要的,他将不得不运行'each()'函数。这里有一个关于JSBin的简单例子:http://jsbin.com/imazo3/edit – RussellUresti 2011-04-19 15:56:40

+0

真棒,它做到了!万分感谢。 – 2011-04-19 15:59:18

+0

@RussellUresti - +1打我的例子:) – Scoobler 2011-04-19 15:59:31

1

如果我正确理解你的问题,你想要选择所有的输入与类w它是从"event"开始,然后如果该值大于零,则显示它们的父类?

你可以在Scoobler的答案使用.each像,或.filter象下面这样:

$('input[class^="event"]') 
    .filter(function() { 
     return $(this).val() > 0; 
    }) 
    .parent() 
    .show() 
; 
+0

像这样的自定义过滤器是一个有趣的想法;它甚至比使用'each()'要快一些:http://jsperf.com/each-vs-filter – RussellUresti 2011-04-19 16:03:12

0

你可以这样做:

$("input.event").each(function(){ 
    if ($(this).val()> 0) { 
     $(this).closest("div").show(); 
    } 
}); 
0

val方法将只返回第一个输入的值。要检查每一个输入,你必须使用一个each环:

$('input[class^="event"]').each(function() { 
    var $this = $(this); 
    if ($this.val() > 0) { 
     $this.parent().show(); 
    } 
}); 

而且,它的价值,我可以发誓,有基于输入的值jQuery选择,但我不能在文档中找到类似的内容。有可能是一个插件或其他东西。

编辑

此外,根据您的HTML,它看起来并不像你需要一个复杂的选择。你大概可以使用input.event什么的。