开发者

Getting inner tag element inside an "each"

I've been messing around with different forms and tables, now I need something that takes data from table tr and td field, runs a if statement on each fetched item, and outputs text inside the 开发者_JAVA百科form, depending what was found in td fields.

So right now I have something like this, which doesn't do anything useful at all, for now, just outputs td-01 class values into the form:

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

and my table structure looks something like this:

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

Right now it only find tr tags and outputs all of them. I need it to split the tr tag up, run if condition on td-0 to determine if it needs to be radio button/text input/checkbox etc, then see what td-1 contains and make that field name, then td-2 is for example a price. all of this should end up in a form. So as you can see, I am stuck with jQuery, but I think it should be doable.

edit: I got something like this after messing around a little, but my if statements don't seem to work on jQuery objects, any way to get around this?

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 Ugh, I was running if statement against jQuery object, of course it didn't work. I got it working with this, looks quite nasty, but it seems to work:

$('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/>');
}
);

Now, I need to figure out how to create input fields from these.


You could possibly make it a bit cleaner by using the jQuery selector context, e.g.:

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


Something like this will do:

$('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;
       }
   }
});
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜