javascript - php foreach 循环中的隐藏输入值未正确传递给 JQuery

标签 javascript php jquery

HTML + PHP:

<?php foreach ($resultpics as $row1){ ?>
<div class="col-md-2">
<a href="#" class="thumbnail" data-popup-open="popup-1"<!-onclick="showImg(<?php //echo $row1['img_id']; ?>-->)">
<input type="hidden" name="imgid" value="<?php echo $row1['img_id']; ?>" id="imgid">
<img id="popimg" src="<?php echo $row1['img_path'];?>/<?php echo $row1['img_id']; ?>.jpg" alt="Pulpit Rock" style="width:200px;height:150px;">  
</a>
</div>  
<?php } ?>

JQuery:

$('[data-popup-open]').on('click', function(e)  {
    var targeted_popup_class = jQuery(this).attr('data-popup-open');
    $('[data-popup="' + targeted_popup_class + '"]').fadeIn(350);
    var imgid = $('input[name=imgid]').val();
    alert(imgid);
    $('img#viewimg').attr('src','images/'+imgid+'.jpg');
    e.preventDefault();
});

问题是

var imgid
的值始终相同(在每个不同的情况下,它仅给出第一张图像的 imgid)。请注意,php foreach 循环没有问题,它可以正确获取。谢谢

最佳答案

更好的方法:由于您要迭代 $resultpics 来构建 HTML,因此您需要使用 classes 而不是 ids,因为重复的 ID 将导致 HTML 不一致。另外,由于您使用的是 data-popup-open 等数据属性,因此请利用 jQuery 的 .data() 方法,这样做:

<?php foreach ($resultpics as $row1) { ?>
    <div class="col-md-2">
        <a href="#" class="thumbnail" data-popup-open="popup-1">
            <input type="hidden" value="<?php echo $row1['img_id']; ?>" class="imgid">
            <img class="popimg" src="<?php echo $row1['img_path']; ?>/<?php echo $row1['img_id']; ?>.jpg">
        </a>
    </div>
<?php } ?>

<script>
    $(".thumbnail").click(function(e){
        e.preventDefault();
        var class_name = $(this).data('popup-open');
        $('[data-popup="' + class_name + '"]').fadeIn(350);
        var imgid = $(this).find('.imgid').val();
        $('img#viewimg').attr('src', 'images/' + imgid + '.jpg');
    });
</script>

关于javascript - php foreach 循环中的隐藏输入值未正确传递给 JQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35271598/

相关文章:

php - 在 HTML 中包含 PHP

php数组下拉字段未插入数据库mysql

javascript - 如何对输入字段的行和列求和

javascript - 如何从标签中提取 href 部分中的 hash # 之后的文本?

javascript - 从ListView中获取选定的记录

javascript - 如何停止 visual studio 在函数定义和立即调用之间插入空格?

php - 使用 Laravel 上传和显示保存在 PostgreSQL 中的 PDF 文件

javascript - jquery 无法从隐藏字段中获取值

jquery - 动态地将参数传递给 Bootgrid

javascript - 干代码 : Use JQuery to make loop for a similar properties in function attached to different classes