Получение внутреннего элемента тега внутри «каждого» - PullRequest
1 голос
/ 31 января 2011

Я возился с различными формами и таблицами, теперь мне нужно что-то, что берет данные из таблицы tr и поля td, выполняет оператор if для каждого выбранного элемента и выводит текст внутри формы, в зависимости от того, что было найдено в тд поля.

Так что сейчас у меня есть что-то вроде этого, которое не делает ничего полезного, сейчас просто выводит значения класса 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, запустил условие if на 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 Тьфу, я выполнял оператор if против объекта 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 ]

2 голосов
/ 31 января 2011

Вы могли бы сделать его немного чище, используя контекст селектора jQuery, например ::

$('tr').each(function () {
  var val = $('td:first', this).text();
  ..
}
0 голосов
/ 31 января 2011

Примерно так будет:

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