2013-04-18 5 views
0

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

<?php 
foreach($ItemArray as $key => $value) { 
    echo ' 
    <tr><td height="30" valign="middle">'.$value['nr'].'</td> 
    <td valign="middle">'.$value['product'].'</td> 
    <td valign="middle">'.$value['describe'].'</td> 
    <td valign="middle" id="price_'.$key.'">'.$value['price'].'</td> 
    <td valign="middle" class="box_darker" id="amount_'.$key.'"> 
    <input name="Field_Amount_'.$key.'" id="Field_Amount_'.$key.'" class="Field_Amount" type="text" /></td> 
    <td valign="middle" id="price_'.$key.'">$key</td></tr>'; } 
;?> 

Теперь я хотел бы проверить, если значение возвращает мне правильный, если нажать на принадлежат области (TD/цена)

$(document).on('click', '[id^=price_]', function(){ 
var Amount = $('[id^=Field_Amount_]').val(); 
alert(Amount); 
}); 

Но фигу Wich поле (тд/цена) в каждой строке я нажимаю , он предупреждает меня только значение из первого ряда! возможно, потому что данные загружаются динамически?

Извините за плохой английский.

ответ

5

Это потому, что вы выполняете свой второй поиск в глобальном масштабе, а val() вернет значение из первого элемента. Используйте $(this).parent().find() вместо:

$(document).on('click', '[id^=price_]', function(){ 
    var Amount = $(this).parent().find('[id^=Field_Amount_]').val(); 
    alert(Amount); 
}); 

Кроме того, вы также должны быть в состоянии использовать .closest():

$(document).on('click', '[id^=price_]', function(){ 
    var Amount = $(this).closest('[id^=Field_Amount_]').val(); 
    alert(Amount); 
}); 
+0

Да, это сделал мой день! Большое спасибо! – onbids

2

Ваше событие триггера работает нормально, так как каждая строка реагирует на клик.

Что такое «неправильный» - это селектор поля Field_amount. Это всегда выбирает первый Field_Amount_, потому что селектор работает на всей странице.

Попробуйте использовать функцию .closest():

$(document).on('click', '[id^=price_]', function(){ 
    var Amount = $(this).closest('[id^=Field_Amount_]').val(); 
    alert(Amount); 
}); 
1

Try This

$(document).on('click', '[id^=price_]', function(){ 
    var key = $(this).attr('id').split('price_'); 
    var amount = $("#Field_Amount_"+key[1]).val(); 
}); 
+0

Большое спасибо! – onbids

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