我对这段代码有些麻烦。
$('body').on("keypress", ".message", function(e) {
if ( e.keyCode == 13 && $(".message").val().length > 0 ) {
input = $(".message");
// Check for join command.
if (input.val().substr(0, 5) == "/join") {
// Get channel
channel = input.val().substr(7, input.val().length);
// APPEND NEW TAB
$("ul.nav-tabs li").after('<li><a href="#' + channel + '" aria-controls="#' + channel + '" role="tab" data-toggle="tab">#' + channel + '</li>');
$('.tab-content').append('<li class="tab-pane log" role="tab-pane" id="' + channel + '" data-channel="' + channel + '"><div class="Topic">Hej och välkommen till #' + channel + '.</div><ul class="Messages"></ul><input type="text" name="message" id="message" autocomplete="off" class="message sendValue"></li>');
$(".nav-tabs li").children('a').last().click();
}
log('<strong>Du</strong>: ' + input.val());
send( input.val() );
$(".message").val('');
}
});
按键事件对动态添加的输入没有反应,我读了一些关于在添加后添加on事件的内容,因为这个代码在加载dom时运行。
所以我的问题是:我怎样才能使动态输入工作呢?
答案 0 :(得分:1)
您已经在使用DriveId
,所以我认为它运作正常,您的真正问题是:
.on
您需要更改为:
input = $(".message");
否则,即使页面上有多个输入,您也将始终处理第一个输入。您还可以使用var input = $(this);
来更轻松地调试这些问题。例如,如果添加:
inspect element > console
到你的脚本,你会看到事件处理程序工作正常,你的问题进一步发展。
(也将$('body').on("keypress", ".message", function(e) { console.log(e);
更改为$(".message").val('');
)