2013-07-16 206 views
-2

我有这样的jQuery代码来检测是否在列中的所有值都是空的,而且,如果是这样,删除列:遍历元素的ID

var valid=0; 
jQuery("#column1 input[type=text]").each(function(){ 
    if(jQuery(this).val() != "") valid+=1; 
}); 

if(valid ==0){ 
    jQuery("td#column1").hide(); 
} 

var valid1=0; 
jQuery("#column2 input[type=text]").each(function(){ 
    if(jQuery(this).val() != "") valid1+=1; 
}); 

if(valid1 ==0){ 
    jQuery("td#column2").hide(); 
} 

是否有到把这个任何方式一个循环,它会遍历每一列(#column1, #column2, etc..)并删除该列,如果需要的话,我不必为每列重复上述代码?

在此先感谢您的帮助。

编辑

感谢所有的建议。 有些答案的问题是循环会删除单个单元格。如果要删除包括标题在内的整个列,我需要循环来确定标题下的所有字段是否为空。

<table> 
<tr id="prod_specs_header"> 
<td><span class="tooltips-link" title="">Product Code</span></td> 
<td id="column1"><span class="tooltips-link isimg" title=""><img style="opacity: 1; visibility: visible;" src="templates/autcastorsandwheels/images/icon_wheel_diam.gif" data-src="templates/autcastorsandwheels/images/icon_wheel_diam.gif" border="0"></span></td> 
<td id="column2"><span class="tooltips-link isimg" title=""><img style="opacity: 1; visibility: visible;" src="templates/autcastorsandwheels/images/icon_wheel_width.gif" data-src="templates/autcastorsandwheels/images/icon_wheel_width.gif" border="0"></span></td> 
<td id="column3"><span class="tooltips-link isimg" title=""><img style="opacity: 1; visibility: visible;" src="templates/autcastorsandwheels/images/icon_overall_height.gif" data-src="templates/autcastorsandwheels/images/icon_overall_height.gif" border="0"></span></td> 
<td id="column4"><span class="tooltips-link isimg" title=""><img style="opacity: 1; visibility: visible;" src="templates/autcastorsandwheels/images/icon_plate_dimen.gif" data-src="templates/autcastorsandwheels/images/icon_plate_dimen.gif" border="0"></span></td> 
<td id="column5"><span class="tooltips-link isimg" title=""><img style="opacity: 1; visibility: visible;" src="templates/autcastorsandwheels/images/icon_hole_spacing.gif" data-src="templates/autcastorsandwheels/images/icon_hole_spacing.gif" border="0"></span></td> 
<td id="column6"><span class="tooltips-link isimg" title=""><img style="opacity: 1; visibility: visible;" src="templates/autcastorsandwheels/images/icon_hole_width.gif" data-src="templates/autcastorsandwheels/images/icon_hole_width.gif" border="0"></span></td> 
<td id="column7"><span class="tooltips-link isimg" title=""><img style="opacity: 1; visibility: visible;" src="templates/autcastorsandwheels/images/icon_offset.gif" data-src="templates/autcastorsandwheels/images/icon_offset.gif" border="0"></span></td> 
<td id="column8"><span class="tooltips-link isimg" title=""><img style="opacity: 1; visibility: visible;" src="templates/autcastorsandwheels/images/icon_carrycap.gif" data-src="templates/autcastorsandwheels/images/icon_carrycap.gif" border="0"></span></td> 
<td id="column9"><span class="tooltips-link isimg" title=""><img style="opacity: 1; visibility: visible;" src="templates/autcastorsandwheels/images/icon_unit_weight.gif" data-src="templates/autcastorsandwheels/images/icon_unit_weight.gif" border="0"></span></td> 
</tr> 

<tr> 
<td>37TAS5700</td> 
<td class="field" id="column1"><input value="50" type="text"></td> 
<td class="field" id="column2"><input value="" type="text"></td> 
<td class="field" id="column3"><input value="71" type="text"></td> 
<td class="field" id="column4"><input value="" type="text"></td> 
<td class="field" id="column5"><input value="46/38x46/38" type="text"></td> 
<td class="field" id="column6"><input value="" type="text"></td> 
<td class="field" id="column7"><input value="" type="text"></td> 
<td class="field" id="column8"><input value="40" type="text"></td> 
<td class="field" id="column9"><input value="0.14" type="text"></td> 
</tr> 

<tr> 
<td>37TAS5701</td> 
<td class="field" id="column1"><input value="75" type="text"></td> 
<td class="field" id="column2"><input value="" type="text"></td> 
<td class="field" id="column3"><input value="100" type="text"></td> 
<td class="field" id="column4"><input value="" type="text"></td> 
<td class="field" id="column5"><input value="46/38x46/38" type="text"></td> 
<td class="field" id="column6"><input value="" type="text"></td> 
<td class="field" id="column7"><input value="" type="text"></td> 
<td class="field" id="column8"><input value="50" type="text"></td> 
<td class="field" id="column9"><input value="0.34" type="text"></td> 
</tr> 

<tr><td>37TAS5702</td> 
<td class="field" id="column1"><input value="100" type="text"></td> 
<td class="field" id="column2"><input value="" type="text"></td> 
<td class="field" id="column3"><input value="122" type="text"></td> 
<td class="field" id="column4"><input value="" type="text"></td> 
<td class="field" id="column5"><input value="46/38x46/38" type="text"></td> 
<td class="field" id="column6"><input value="" type="text"></td> 
<td class="field" id="column7"><input value="" type="text"></td> 
<td class="field" id="column8"><input value="65" type="text"></td> 
<td class="field" id="column9"><input value="0.55" type="text"></td> 
</tr> 
</table> 
+2

什么是HTML是什么样子? – j08691

+2

由于ID在上下文页面上必须是唯一的,您的代码对我来说似乎很陌生,您能发布相关的HTML代码吗? –

+0

你应该给每一列一个类,而不是一个ID,然后按照@ virus721的建议。 – Sablefoste

回答

0

可以先环列,然后内部元素

jQuery("[id^=column]").each(function(){ 
    valid = 0; 
    jQuery(this).find("input[type=text]").each(function(){ 
     if(jQuery(this).val() != "") valid+=1; 
    }); 

    if(valid ==0){ 
    jQuery(this).hide(); 
    } 
}); 
+0

拒绝投票的理由? – Adil

0
var valid = new array(); 
$('[id^="column"]').each(function() { 
    if ($(this).find('input:text').val().length !== 0) { 
     valid[$(this).index()] = 1; 
    } else { 
     valid[$(this).index()] = 0; 
     $(this).hide(); 
    } 
}); 

你需要创建的valid数组,然后您可以逐步列,设置的有效指标每一次都隐藏了空容器。

0

给所有的TD类column,则:

$("td.column").each(function() { 
    var valid = false; 
    $(this).find("input[type=text]").each(function() { 
     if(jQuery(this).val() != "") { 
      valid = true; 
      return false; // end the .each immediately 
     } 
    }); 
    if (!valid) { 
     $(this).hide(); 
    } 
}); 
+0

感谢您的帮助 - 我尝试了这个建议,几乎与它无关,它不检测列中的所有字段是否为空,然后删除包含其标题的完整列 - 它似乎删除所有没有内容的td?所有的标题消失了?如果列中的一个字段有一个值,那么我希望整列保留。 –

+0

我在发布HTML之前写过它。 HTML与我想象的基于你的代码不匹配。由于ID必须是唯一的,因此我认为每个'#columnN'都将是一个单独的'TD',其中包含一堆'INPUT'。 – Barmar

0

由于它是简答题天:

$('[id^="column"]:not(:has(input:text:not([value=""])))').hide();