2012-03-01 42 views
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", function() { 
       if ($(this).val() != "" || $(this).val().length > 0) { 
        hidden++; 
        $(wrapper).find(".field-content").hide(); 
        $(wrapper).addClass("hide"); 
       } else { 
        visible = visible + 1; 
       } 
      }); 
}); 

下面我的HTML是1 字段(如下所示一个格)它们全部包裹与其他领域

<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> 

我的问题一个div内,这可能与jquery:

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

包装也没有在给定的代码中定义。 – 2012-03-01 11:09:42

回答

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++; 
} 
+0

不,我只有一个元素在一个包装里面,当它是一个文本框,你的代码可以用于收音机箱,因为我的包装中有很多元素,我需要检查所有这些元素 – Haroon 2012-03-01 11:15:05

+0

如何运行函数的发现?或找到后?因为只有1个元素 – Haroon 2012-03-01 11:16:45

+0

我更新了我的答案。尽管如此,它会做同样的事情,但速度可能会稍微快一些。 – 2012-03-01 11:19:09

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; 
     } 
    }); 
}); 
相关问题