php - 将 jquery 函数链接到 PHP 查询结果

标签 php jquery

我正在使用 PHP 检索视频列表。我正在使用 jquery 在叠加​​层中显示视频。我一切正常,但问题是实现方法对我来说似乎有点暴力,我正在寻找一种方法来删除冗余代码。

基本上,我从数据库中获取视频列表,并使用 foreach 循环将这些视频输出到屏幕。我使用视频的 ID 使每个结果的点赞链接 ID 都是唯一的:

<a id=like<?php echo $video['fileID'] ?>" ...

然后我必须将 jquery 添加到循环的每次迭代中。它是一个 ajax 调用,传递有关视频、当前用户等的信息。如果当前用户对视频投票,则调用 jquery ajax 函数并显示新的投票计数:

//upVote for a discussion
    $('#like<?php echo $video['fileID'] ?>').click(function(){
    $.ajax({
        type:"POST",
        url:'/ajax/likeFile.php',
        data:"voter=" + <?php echo (isset($_SESSION['user_id']) ? $_SESSION['user_id'] : ''); ?>
        + "&poster=" + <?php echo $video['userID'] ?>
        + "&classID=" + <?php echo $_SESSION['class'] ?>
        + "&lessonID=" + <?php echo $_SESSION['lesson'] ?>
        + "&id=" + <?php echo $video['fileID'] ?>
        + "&type=like",
        success: function(data) {
        var $response=$(data);
        var votes = $response.filter('#voteCount').text();
        $('#fileVotes').text(votes);
        $('#like').attr('src', '/images/upvoteDisabled.png');
        $('#unlike').attr('src', '/images/downvote.png');
        }

    });
    });

就像我说的,这工作正常。问题是我想减少对每个链接一遍又一遍地重复jquery。有没有办法调用它,并且只让选择的项目传递其当前循环迭代变量,而不是为每个链接创建 jquery 函数?

我知道这是一个非常复杂的问题。预先感谢任何想要解决此问题的人。

最佳答案

首先,设置 HTML5 DOCTYPE,以便您可以利用 custom data attributes :

<!DOCTYPE HTML>

然后让 PHP 填充每个 anchor 的数据属性:

<a class="like-btn" id="like<?=$video['fileID']?>" data-voter="<?php echo (isset($_SESSION['user_id']) ? $_SESSION['user_id'] : '');" data-poster="<?=$video['userID']?>" data-class="<?=$_SESSION['class']?>" data-lesson="<?=$_SESSION['lesson']?>" data-file="<?=$video['fileID']?>"> ... </a>

然后使用单个 JQuery 点击处理程序:

$('a.like-btn').click(function(){
    $.ajax({
        type:"POST",
        url:'/ajax/likeFile.php',
        data:"voter="  + $(this).data('voter')
        + "&poster="   + $(this).data('poster')
        + "&classID="  + $(this).data('class')
        + "&lessonID=" + $(this).data('lesson')
        + "&id="       + $(this).data('file')
        + "&type=like",
        success: function(data) {
            var $response=$(data);
            var votes = $response.filter('#voteCount').text();
            $('#fileVotes').text(votes);
            $(this).attr('src', '/images/upvoteDisabled.png');
            //$('#unlike').attr('src', '/images/downvote.png'); // fix in your DOM
        }
    });
});

关于php - 将 jquery 函数链接到 PHP 查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6796406/

相关文章:

javascript - 通过 jquery 协助对嵌套 html 表进行分组

jQuery slider 和 IE6 问题

javascript - 如何确定 onmousemove 事件的方向?

php - 不使用表单将值传递到下一页

php - 如何使用php在下一页中显示与点击元素相关的信息

javascript - 在 GTM 增强型电子商务中实现 CPA 成员(member)购买

PHP API key 生成器

php - 菜鸟: display err_msg on page (pt. 2)

php - 如何从 PHP 的 html 页面中抓取 H2 和 H3 标签?

javascript - 如何使用 momentjs 和 javascript 将 maxDate 设置为日期选择器