我正在制作一个使用图像的投票系统,当您单击其中一个图像时,它将提交该图像,然后淡出并使用php页面重新加载。问题是,第一次提交作品,但一旦它重新加载,点击图像什么也不做。甚至没有我测试过的警报。jquery触发器在动态加载新内容后不工作
vote.js
$('.firstDisplay').on("click", function() {
alert("work1");
var win = $(this).attr("title");
var loss = $('.secondDisplay').attr("title");
send_vote(win, loss);
console.log("<-CLIENT-> Click: Sent vote");
});
$('.secondDisplay').on("click", function() {
alert("work2");
var win = $(this).attr("title");
var loss = $('.firstDisplay').attr("title");
send_vote(win, loss);
console.log("<-CLIENT-> Click: Sent vote");
});
function send_vote(win, lose) {
var data = {'win': win, 'lose': lose};
$.ajax({
type: "POST",
url: 'actions/send-vote.php',
data: data,
success: function (html) {
$('#sent-vote').css('display', 'block');
$('#sent-vote').fadeOut(2000);
$('.imageBtn').fadeOut(2000);
$('#imageDisplay').load("source/templates/vote.php");
console.log("<-SYSTEM-> Ajax request sent and processed.");
},
error: function(e) {
$('#fail-vote').css('display', 'block');
$('#fail-vote').fadeOut(2000);
console.log("<-SYSTEM-> Ajax request failed to process.");
}
});
}
vote.php
<?php
$maximumPersons = 95;
$firstDisplay = rand(1, $maximumPersons);
$secondDisplay = rand(1, $maximumPersons);
function getScore($photo_id) {
$query = "SELECT *
FROM photo_scores
WHERE photo_id='".$photo_id."'";
$result = $database->query_select($query);
return $result;
}
?>
<a href="javascript:void(0);" class="imageBtn" id="firstDisplay" title="<?php echo $firstDisplay; ?>">
<img src="<?php echo $baseURL; ?>/images/persons/<?php echo $firstDisplay; ?>.png" />
<?php // $scoreFD = getScore($firstDisplay); echo "Wins: ".$scoreFD["wins"]." Losses: ".$scoreFD["losses"].""; ?>
</a>
<a href="javascript:void(0);" class="imageBtn" id="secondDisplay" title="<?php echo $secondDisplay; ?>">
<img src="<?php echo $baseURL; ?>/images/persons/<?php echo $secondDisplay; ?>.png" />
<?php // $scoreSD = getScore($secondDisplay); echo "Wins: ".$scoreSD["wins"]." Losses: ".$scoreSD["losses"].""; ?>
</a>
这一切都正确加载,只是在img /按钮不会其重装上阵后提交/工作。
我没有看到您重新绑定到任何地方 –
如果您要替换旧的元素,请在AJAX之后单击处理程序以添加新元素,你必须重新附加你的点击处理程序。根据你的jQuery版本,你可以使用'.on()'或'.delegate()'。 –
@AlexW使用我相信的最新版本。我将如何重新附加我的点击处理程序?非常新的JS –