将内部标记元素放入“每个”内部

时间:2011-01-31 08:55:24

标签: javascript jquery loops html-table each

我一直在搞乱不同的表单和表格,现在我需要从表格tr和td字段获取数据,在每个获取的项目上运行if语句,并在表单内输出文本,这取决于在td fields。

所以现在我有类似的东西,它根本没有任何用处,现在,只需将td-01类值输出到表单中:

var test;
$('tbody tr').each(function(index) {
test = $(this+'.td.td-0');
$('fieldset.csc-mailform').after($('td.td-0'));
});

我的表结构看起来像这样:

<table class="contenttable contenttable-3 tabel">
    <tr class="tr-even tr-0">
            <td class="td-0">01</td>
            <td class="td-1">Valik 1</td>
            <td class="td-last td-2">150€</td>
    </tr>
    <tr class="tr-odd tr-1">
            <td class="td-0">01</td>
            <td class="td-1">Valik 2</td>
            <td class="td-last td-2">50€</td>
    </tr>
    <tr class="tr-even tr-2">
            <td class="td-0">01</td>
            <td class="td-1">Valik 3</td>
            <td class="td-last td-2">170€</td>
    </tr>
    <tr class="tr-odd tr-3">
            <td class="td-0">01</td>
            <td class="td-1">Valik 4</td>
            <td class="td-last td-2">88€</td>
    </tr>
</table>

现在它只找到tr标签并输出所有标签。我需要它来拆分tr标签,如果条件在td-0上运行以确定它是否需要单选按钮/文本输入/复选框等,然后查看td-1包含的内容并创建该字段名称,然后td-2例如是一个价格。所有这一切都应该以一种形式结束。 所以你可以看到,我坚持使用jQuery,但我认为它应该是可行的。

编辑: 在搞砸了一下之后我得到了类似的东西,但我的if语句似乎不适用于jQuery对象,有什么方法可以解决这个问题吗?

var check1;
$('tbody tr').each(function(index) {
//test = $(this+'.td.td-0');
check1 = $('td.td-0');
alert(check1);
if(check1=='01'){
content_type="checkbox";
}else if(check1=='02'){
content_type="text";
}else{
content_type="none";
}
$('fieldset.csc-mailform').after(content_type);

//$('fieldset.csc-mailform').after($('td.td-0'));
});

// EDIT2 呃,我正在运行如果声明对jQuery对象,当然它没有用。 我得到它的工作,看起来很讨厌,但似乎工作:

$('tr').each(function () { var val = $(this).children('td:first').text(); 
//$check1 = $('td.td-0');
if(val=='01'){
content_type="checkbox";
}else if(val=='02'){
content_type="text";
}else{
content_type="none";
}
$('fieldset.csc-mailform').after(content_type + '<br/>');
}
);

现在,我需要弄清楚如何从这些创建输入字段。

2 个答案:

答案 0 :(得分:2)

使用jQuery选择器上下文可以使它更清晰,例如:

$('tr').each(function () {
  var val = $('td:first', this).text();
  ..
}

答案 1 :(得分:0)

这样的事情会:

$('table tr').each(function() {
   $tds = $(this).children();
   for(var i=0;i<$tds.length;i++){
       $td = $tds[i];
       if($td.hasClass('td-0'){
          //do your thing by getting next TD or something else
          break;
       }
   }
});