如何在 javascript 中正确地将绑定切换到 on 或 live


How to properly switch a bind in javascript to on or live?

我是php的新手,我正在尝试通过教程来学习。现在,我正在编写一个聊天教程。最近,我遇到了一个问题,教程要求我使用 bind,但我认为它不再适用于 jquery。我正在尝试将消息扔到我的消息框中。这是我的javascript的代码

    var chat = {}
    chat.fetchMessages = function () {
$.ajax({ 
    url: 'ajax/chat.php',
    type: 'post',
    data: { method: 'fetch' },
    success: function(data) {
        $('.chat .messages').html(data);
        }
    });
    }
    chat.throwMessage = function (message) {
if ($.trim(message).length != 0) {
        $.ajax({ 
        url: 'ajax/chat.php',
        type: 'post',
        data: { method: 'throw', messsage: message },
        success: function(data) {
            chat.fetchMessages();
            chat.entry.val('');
        }
    });
}
    }
    chat.entry = $('.chat .entry');
    chat.entry.bind('keydown', function(e) {
if (e.keyCode === 13 && e.shiftKey === false) {
    chat.throwMessage($(this).val());
    e.preventDefault();
}
    });

    chat.interval = setInterval(chat.fetchMessages, 4000);
    chat.fetchMessages();

以下是正在发送信息的 php 文件:

    <?php
    require '../core/init.php';
    if (isset($_POST['method']) === true && empty($_POST['method']) === false) {
$chat       = new Chat();
$method     = trim($_POST['method']);
if ($method === 'fetch') {
    $messages = $chat->fetchMessages();
    if (empty($messages) === true) {
        echo 'There are currently no messages in the chat';
    } else {
        foreach($messages as $message) {
        ?>
                <div class="message">
                    <a href="#"><?php echo $message['username']; ?></a> says:
                    <p><?php echo $message['message']; ?></p>
                </div>
        <?php
        }
    }

 } else if ($method === 'throw' && isset($_POST['message']) === true) {
    $message = trim($_POST['message']);
    if (empty($message) === false) {
        $chat->throwMessage($_SESSION['user'], $message);
    }
}
    }

当我打开检查器时,所有测试都正常工作,但 php 代码似乎没有将数据放在我的消息框中。

$(document).on('keydown', chat.entry, function(e) {
    if (e.keyCode === 13 && !e.shiftKey) {
        e.preventDefault();
        chat.throwMessage( this.value );
    }
});

而不是document使用而是使用#element

使用"bind"时,只有现有元素会受到影响,如果您添加另一个元素,则此元素将不受事件的影响。

Live 会影响现有元素和将在运行时添加的元素。