我的HTML表单中包含此代码。
<?php foreach ($charges as $c): ?>
<br><input type="checkbox" id="charge<?php echo $c->id; ?>" cash="<?php echo $c->amount; ?>"> <?php echo $c->description; ?>
<?php } ?>
当我勾选一个文本框时,我希望弹出该元素的值。
到目前为止,只会弹出第一次出现的值。
这是jQuery代码。我知道我错过了什么,但我不知道
function triggerChange1(){
$("#ch1").trigger("change");
}
$("#charge1").change(function() {
var v = $(this).attr('cash');
alert(v);
});
if($("#charge1").prop('checked')){
triggerChange1();
}
答案 0 :(得分:7)
首先,您应该使用class
属性将元素组合在一起。您还应该使用data-*
属性将任何自定义元数据分配给元素,因为创建自己的非标准属性会使页面无效并导致潜在的UI和JS问题:
<?php foreach ($charges as $c): ?>
<br><input type="checkbox" class="charge" id="charge<?php echo $c->id; ?>" data-cash="<?php echo $c->amount; ?>"> <?php echo $c->description; ?>
<?php } ?>
然后,您可以使用单击处理程序从引发事件的元素中获取值:
$('.charge').change(function() {
var v = $(this).data('cash');
alert(v);
});
// raise the event on checked elements on load:
$('.charge:checked').change();
答案 1 :(得分:3)
编辑:正如Rory's answer中所述,您应在自定义属性前加上data-
您需要的是class
。
<?php foreach ($charges as $c): ?>
<br><input type="checkbox" class="charge" id="charge<?php echo $c->id; ?>" data-cash="<?php echo $c->amount; ?>"> <?php echo $c->description; ?>
<?php } ?>
$(".charge").change(function() {
var v = $(this).data('cash');
alert(v);
});
您可以在此处看到它:http://jsfiddle.net/0cude9jr/
答案 2 :(得分:-2)
function triggerChange1(){
$("#ch1").trigger("change");
}
$(document).ready(function() {
$("#charge1").change(function() {
var v = $(this).attr('cash');
alert(v);
});
if($("#charge1").prop('checked')){
triggerChange1();
}
}
你应该使用value属性而不是cash属性。
然后你可以拨打var v = $(this).val();