2016-01-28 4 views
3

У меня есть код HTML следующим образом.Значение jQuery для делегированных полей ввода

<table id="items"> 
<tr class="item-row"> 
     <td class="item-name"><div class="delete-wpr"><a class="delete" href="javascript:;" title="Remove row">-</a></div></td> 
     <td><input type="text" id="slslno" class="slno"/></td> 
     <td><input type="text" class="cost"/></td> 
     <td><input type="text" class="qty"/></td> 
     <!-- <td><span class="price"></span></td>--> 
     <td class="price"></td> 
     <a class="add" id="addrow" href="javascript:;" title="Add a row">+</a> </tr> 

</table> 

У него есть кнопка с именем «Добавить строку», которая динамически добавляет несколько строк.

Тогда у меня есть это связывание, которое вызывает функцию обновления во время размытия поля slno.

function bind() 
    { 
     $(".slno").blur(update_unitcost); 
    } 

Функция update_unitcost заключается в следующем.

function update_unitcost()  
{ 
    var unitprice1=$(this).val(); 
    unitprice={"unitpricereal":unitprice1}; 
    $.ajax({ 
     type: "POST", 
     url: "findcost.php", 
     data: unitprice,   

     success: function(unitp){   
      $(".cost").val(unitp);   
     } 
    });     
} 

В приведенной выше функции, я могу получить значение с селектором this, но когда дело доходит до установки значения в следующей строке,

$(".cost").val(unitp); 

Он просто сбрасывает каждый " .cost "классов к этому конкретному номеру. Как установить значения для отдельных делегированных строк? Я тоже пробовал следующий подход, но он не прошел.

var row = $(this).parents('.item-row'); 
row.find('.cost').val(unitp); 

ответ

1

Установить переменную в функции только целевой конкретный .cost элемент, который вы хотите обновить вместо всех из них.

function update_unitcost()  
{ 
    var unitprice1=$(this).val(); 
    var costItem = $(this).parent().parent().find('td input.cost'); 
    unitprice={"unitpricereal":unitprice1}; 
    $.ajax({ 
     type: "POST", 
     url: "findcost.php", 
     data: unitprice,   

     success: function(unitp){   
     costItem.val(unitp);   
     } 
    });     
} 
+0

Работал как очарование !! Огромное спасибо !!! –

+0

Не могли бы вы объяснить мне, что такое $ (this) .parent(). Parent(). Find ('td input.cost'); делает? –

+1

уверен. первый .parent() смотрит на содержащий элемент, на который действует функция, которая будет . Следующий .parent() выходит за пределы этого элемента в основной контейнер (). В этом новом контексте функция .find() затем может получить то, что вы действительно хотите, и его дочерний вход – CreMedian

Смежные вопросы