javascript - 在 php foreach 循环中选择特定元素 jquery

标签 javascript php jquery

我在首页的 php 中有 foreach 循环用于获取图像和图像的描述,在 foreach 循环内我有表单,表单用于发送评论,这是首页..

<?php foreach ($photo as $p) : ?>
<div class="photo-box">
    <div class="galP photo-wrapper" >
        <div data-fungal="<?php echo $p->id; ?>" class='galFun-get_photo'>
            <img src="<?php echo $p->thumb; ?>" class='image'>
        </div>
    </div>
    <div class='inline-desc'>
        <a href="/gallery/user.php?id=<?php echo $p->userId; ?>">
            <?php echo $p->username; ?>
        </a>
    </div>
    <form method="POST" action="" class="form-inline comment-form galForm"> 
        <div class="form-inline">
            <input type="hidden" class='photoId form-control' name="photoId" value="<?php echo $p->id; ?>" >
            <input type="hidden" class='userId form-control' name="userId" value="<?php echo $session->userId; ?>" >
            <textarea cols="30" rows="3" class='comment fun-gal-textarea' name="comment" placeholder="Leave your comment"></textarea>
            <button type='button' name='send' class='sendComment'>SEND</button>
        </div>
    </form>
    <div class='new-comm'></div>
    <div class='comments-gal' id='comments'>
        <div data-id='<?php echo $p->id; ?>' class='getComment'>
            <span>View comments</span>
        </div>
    </div>
</div>

使用 ajax 我想在单击具有类 sendComment 的按钮后发送 userId、photoId 和评论。当我发送对第一张图片的评论时,一切正常,但是当我尝试发送对其他图片的评论时,它不起作用。我无法选择特定的输入和文本区域来获得正确的值。这是我的 jquery

    $('body').on('click','.sendComment',function(){  
    var selector = $(this);       
    var userId = selector.siblings($('.userId'));
    var photoId = selector.siblings($('.photoId'));
    var c = selector.siblings($('.comment'));  
    var comment = $.trim(c.val());
    if (comment == "" || comment.length === 0) {
        return false;
    };
        $('#no-comments').remove();
    $.ajax({
        url: '/testComment.php',
        type: 'POST',
        data: {comment:comment,userId:userId,photoId:photoId}
    }).done(function(result) {
        ...
        }
    })
});

此外,我已经尝试过各种可能的方法来从表单中获取正确的值,但都没有成功。

最佳答案

这一行

var userId = selector.siblings($('.userId'));

不太可能获得正确的输入,因为根据 https://api.jquery.com/siblings/

.siblings( [selector ] )

selector

A string containing a selector expression to match elements against.

所以这需要是:

var userId = selector.siblings('.userId');

此时您还需要从输入中获取实际值,给出:

var userId = selector.siblings('.userId').val();
var photoId = selector.siblings('.photoId').val();
var c = selector.siblings('.comment');  

其余代码保持原样。

关于javascript - 在 php foreach 循环中选择特定元素 jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49031580/

相关文章:

javascript - 我可以在脚本中完全禁用 'debugger' 吗?

javascript - 为什么我的 JS 代码没有向 HTML 页面显示消息?

php - Laravel - 查询生成器 - 按标签数量对结果进行排序

php - 绕过 W3 Total Cache 创建的页面缓存

php - Twig 循环遍历数组,值为 "."

jquery - 单击按钮播放时视频向左移动

javascript - 单击删除 append

javascript - 在javascript中定义一个页面id

Javascript:无法在 Else 上读取 null 的属性 'style'

javascript - 我想更改帖子标题的某些字母的颜色