javascript - 动态加载新内容后 jquery 触发器不起作用

标签 javascript php jquery ajax

我正在制作一个使用图像的投票系统,每当您单击其中一张图像时,它就会提交该图像,然后它会淡出并使用 php 页面重新加载。问题是,第一次提交有效,但是一旦重新加载,单击图像就不会执行任何操作。甚至不是我测试过的警报。

投票.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.");
        }
    });
}

投票.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>

一切都正确加载,只是图像/按钮在重新加载后不会提交/工作。

最佳答案

您需要使用表单 $(document).on('event', '.selector', function(){}); 来监听 DOM 上的新元素并附加您的他们的处理程序。

关于javascript - 动态加载新内容后 jquery 触发器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703742/

相关文章:

javascript - 基于复选框添加和删除 URL 参数

jquery - 鼠标移出时清除多边形

javascript - 从 Javascript 数组对象中删除记录

javascript - 根据窗口宽度更改图像 - 响应式布局 CSS?查询? Ajax ?

php - 最佳 PHP 时区列表

php - Laravel 在迁移中给出数据类型 bit/byte

javascript - 使用 Tempus Dominus 的日期时间选择器防止输入字段上的移动键盘

javascript - 如何在 AngularJS Accordion 主体中获取动态内容

php - Yii2:自定义登录失败消息并提供确切原因

javascript - 如何提醒用户更改未保存