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

时间:2015-03-11 12:26:11

标签: javascript jquery html

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

3 个答案:

答案 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();