每行不会显示值

时间:2013-04-18 11:42:14

标签: php arrays

我有问题。
数组会从中返回一些动态数据。

<?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 / price)时测试该值是否返回正确值

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

但是我点击的每行中都没有明确的字段(td / price),它只提醒我第一行的值!也许是因为数据动态加载?

对不起英语不好。

3 个答案:

答案 0 :(得分: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);
}); 

答案 1 :(得分:2)

您的触发事件正常,因为每一行都会对点击作出反应。

Field_amount的选择器是什么“错误”。这总是选择第一个Field_Amount_,因为选择器正在整个页面上工作。

尝试使用.closest()功能:

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

答案 2 :(得分:1)

试试这个

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