从Selector开始,带有$(this)目标

时间:2011-04-19 15:47:41

标签: jquery jquery-selectors

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

基本上我想要做的是根据输入值控制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 />&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>  

4 个答案:

答案 0 :(得分:4)

这实际上取决于您运行if语句的上下文,如果是在页面加载时,您可以尝试这样的事情:

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

Example here

答案 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或其他东西。