2013-12-04 1 views
0

В качестве последующих мер по this question и на основе the answer дал, я сделал что-то вроде этого: http://jsfiddle.net/9r79f/1/Получить данные значения атрибута и установите значение соответствующего элемента

HTML:

<table> 
    <tr> 
     <td></td> 
     <td>Title</td> 
     <td>Title1</td> 
     <td>Title2</td> 
    </tr> 
    <tr> 
     <td>A</td> 
     <td><input type="text" /></td> 
     <td><input type="text" /></td> 
     <td><input type="text" /></td> 
    </tr> 
    <tr> 
     <td>A1</td> 
     <td><input type="text" class="sub" data-parent="A"/></td> 
     <td><input type="text" class="sub" data-parent="A" /></td> 
     <td><input type="text" class="sub" data-parent="A" /></td> 
    </tr> 
    <tr> 
     <td>A2</td> 
     <td><input type="text" class="sub" data-parent="A"/></td> 
     <td><input type="text" class="sub" data-parent="A"/></td> 
     <td><input type="text" class="sub" data-parent="A" /></td> 
    </tr> 
    <tr> 
     <td>B</td> 
     <td><input type="text" /></td> 
     <td><input type="text" /></td> 
     <td><input type="text" /></td> 
    </tr> 
    <tr> 
     <td>B1</td> 
     <td><input type="text" class="sub" data-parent="B"/></td> 
     <td><input type="text" class="sub" data-parent="B" /></td> 
     <td><input type="text" class="sub" data-parent="B" /></td> 
    </tr> 
    <tr> 
     <td>B2</td> 
     <td><input type="text" class="sub" data-parent="B"/></td> 
     <td><input type="text" class="sub" data-parent="B"/></td> 
     <td><input type="text" class="sub" data-parent="B" /></td> 
    </tr> 
</table> 

JQuery :

$('input[type=text]').on('blur', function() { 
     //alert($(this).val()); 
     calcA($(this)); 
}); 

function calcA(param){ 
     var finalresult = 0, 
      $sub = param, 
      $value = param.data('parent'); 

     $.each($sub, function(i) { 
      var fiVal = parseFloat($sub.eq(i).val()); 

      if (fiVal) { 
       finalresult += fiVal; 
       $value.val(finalresult); 
      } 

     }); 
} 

Как установить значение первой строки в A1 + A2 к первой строке O f вводится в A с использованием data атрибутов без повторения кода? И сделать то же самое для B и так далее?

+0

Я знаю, что это не отвечает на вопрос, но контекст '$ .each' - текущий элемент. Вместо использования '$ sub.eq (i) .val()', вы можете использовать 'this.value', чтобы избежать избыточного вызова jQuery. – Kyle

+0

Спасибо, что указали это! – input

+0

Нет проблем. Извините, я не могу ответить на ваш вопрос. Я не использовал атрибуты данных, чтобы помочь. – Kyle

ответ

1

Вы могли бы сделать что-либо из этих вещей, чтобы получить data-parent атрибут:

var data_parent_value = $(param).attr('data-parent'); // A or undefined 

Посмотреть консоли в этом JSFiddle: http://jsfiddle.net/9r79f/2/

+0

Я получаю значение 'data-parent', которое является' A', но как установить общее значение подстрочных строк ('A1' +' A2') на соответствующий вход в строке заголовка 'A' , Я потерялся в этом. '$ value.val()' неверно, поскольку Firebug показывает '$ value.val() не функция'. – input

+1

Это поможет вам в правильном направлении: http://jsfiddle.net/9r79f/4/ –

+0

Благодарим за руководство. – input