jQuery从<ul>列表中检索一个值


jQuery retrieve a value from a <ul> list

我有以下脚本来创建名称列表:

setInterval(function() {
    $.ajax({
        type: "GET",
        url: "<?php echo base_url(); ?>cashier/walkin_patient_payments",
        dataType: "JSON",
        success: function(payment_list) {
            pat_payment_list = $('#walkin_patient_payment').empty();
            if (payment_list === null) {
            } else {
                $.each(payment_list, function(i, payment_list) {
                    pat_payment_list.append('<li><a href="#walkin_patient_form" id="walkin_payment_link" class="walkin_payment_link"><i class = "glyphicon glyphicon-user"> </i>' + payment_list.walkin_patient_name + '</a><span style="color:red !important;"> Kshs : ' + payment_list.amount + '</span>'n'
          <input type="hidden" id="walkin_id_list" name="walkin_id_list" class="walkin_id_list" value="' + payment_list.walkin_id + '"/>'n'
    </br></li>');
                });
            }
        },
        error: function(data) {
            //error do something
        }
    });
}, 3000);

附在以下UL列表中:

<ul class = "dashboard-list walkin_patient_payment" id="walkin_patient_payment">
</ul>

但是当我尝试运行以下脚本时,该脚本应该从列表中选择单个walkin id,即使我单击第5个列表,它也只给出第一个列表的值。

下面是脚本:

$('.walkin_patient_payment').on('click', '.walkin_payment_link', function() {
    //get
    var walkin_id = $(this).closest('ul').find('input[name="walkin_id_list"]').val();
    alert(walkin_id);
});

实现这一点的最佳方法是什么?我做错了什么?

这是因为您正在遍历 ul 元素,并且.find('input[name="walkin_id_list"]')将返回 ul 中名称为 walkin_id_list 的所有输入。 并且在元素集合上使用.val()将仅返回第一个元素的值。

您需要使用 .closest('li') 而不是 .closest('ul')

 var walkin_id = $(this).closest('li').find('input[name="walkin_id_list"]').val();

另请注意,您正在生成具有相同 ID 的元素。ID 应始终是唯一的。您可以改用相同的类。

可以直接在 li 上实现点击

$('.walkin_patient_payment li').click(function () {
            var walkin_id = $(this).find('input[name="walkin_id_list"]').val();
            alert(walkin_id);
});