我有问题。
数组会从中返回一些动态数据。
<?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),它只提醒我第一行的值!也许是因为数据动态加载?
对不起英语不好。
答案 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();
});