2012-03-01 52 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; 
     } 
    }); 
}); 
相關問題