如何正确地将javascript中的绑定切换为on或live?

时间:2013-09-09 23:25:21

标签: php javascript jquery chat bind

我是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代码似乎没有将数据放在我的消息框中。

2 个答案:

答案 0 :(得分:0)

$(document).on('keydown', chat.entry, function(e) {

    if (e.keyCode === 13 && !e.shiftKey) {
        e.preventDefault();
        chat.throwMessage( this.value );
    }

});

而不是document而不是#element

答案 1 :(得分:0)

使用“bind”时,只会影响现有元素,如果添加其他元素,则该元素不会受到该事件的影响。

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