作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!