我如何找到,然后有一个回调函数

时间:2012-03-01 11:06:04

标签: jquery

我不确定我的代码是否正确,但我试图对特定元素进行一些检查,但我的计数器不起作用 - 我的字段没有隐藏。

//get all fields, some could be text, text area, checkbox, radio...

$(".my-field").each(function(i) {
var wrapper = this;

//check if the text box has a vaule, this callback here is not working/ correct?

$(wrapper).find("input:text", function() {
                if ($(this).val() != "" || $(this).val().length > 0) {
                    hidden++;
                    $(wrapper).find(".field-content").hide();
                    $(wrapper).addClass("hide");
                } else {
                    visible = visible + 1;
                }
            });
});

下面的我的Html是1 字段(下面显示的一个div),它们都包含在带有其他字段的div中

<div data-field-type="Text" data-field-id="1" class="display-wrapper my-field">
        <div class="field-header">
            <span>name:
                xyz</span> | <span>
                    text field</span>
        </div>
        <div class="field-content">
            <div class="editor-label">
                <p class="clear">
                    some description...</p>
            </div>

<div class="editor-field">
    <input type="text" value="iojhiojio" name="1" maxlength="100" id="field-1" class="field-bigtext">
</div>
            <br>
        </div>
        <div style="display: none;" class="field-error-wrapper">

        </div>
    </div>

我的问题,这可能是jquery:

$(wrapper).find("input:text", function() {
.. some code
});

2 个答案:

答案 0 :(得分:2)

你可能正在寻找.each(),以便为每个元素做点什么。

$(wrapper).find("input:text").each(function() {
    if ($(this).val() != "" || $(this).val().length > 0) {
        hidden++;
        $(wrapper).find(".field-content").hide();
        $(wrapper).addClass("hide");
    } 
    else {
        visible++;
    }
});

.find()只做一件事:在你正在运行它的元素内找到与给定选择器/对象匹配的对象。

编辑:看过你的评论后,你说你只想对一个元素做点什么。因此,只需将.find()中的内容存储在变量中,然后使用它进行处理。

var inputElem = $(wrapper).find('input:text');
if (inputElem.val() != "" || inputElem.val().length > 0) {
    hidden++;
    $(wrapper).find('.field-content').hide();
    $(wrapper).addClass("hide");
} 
else {
    visible++;
}

答案 1 :(得分:0)

只需添加每个。

//get all fields, some could be text, text area, checkbox, radio...
$(".my-field").each(function (i) {
    var wrapper = this;
    //check if the text box has a vaule, this callback here is not working/ correct?
    $(wrapper).find("input:text").each(function () {
        if($(this).val() != "" || $(this).val().length > 0) {
            hidden++;
            $(wrapper).find(".field-content").hide();
            $(wrapper).addClass("hide");
        } else {
            visible = visible + 1;
        }
    });
});