如何使用 jQuery 在循环中获取属性的值

How to get a value of an attribute inside a loop using jQuery

本文关键字:获取 属性 循环 何使用 jQuery      更新时间:2023-09-26

我从我的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(); 
        } 

首先,您应该使用 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();

编辑:正如 Rory 的回答中正确指出的那样,您应该在自定义属性前面加上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/

function triggerChange1(){
        $("#ch1").trigger("change");
    }
$(document).ready(function() {
    $("#charge1").change(function() {
        var v = $(this).attr('cash');
        alert(v);    
    });
    if($("#charge1").prop('checked')){
       triggerChange1(); 
    } 
}

您应该使用价值属性而不是现金属性。然后你可以打电话给var v = $(this).val();