Javascript jquery奇怪错误 $(文档).ready(函数(){ $.ajax({ 键入:“获取”, url:“textman.php”, 成功:功能(数据){ $('#textbaz')。追加(数据); var file=data.split(“”); var集=0; console.log(文件); $('#textbaz')。追加(); } }); $(“#文本框”).keypress(函数(){ log($(“#textbox”).val()); }); 返回false; })
问题是,它只是不记录#textbox的值。无论我在那里键入什么,它都没有效果D:尝试此-(使用Javascript jquery奇怪错误 $(文档).ready(函数(){ $.ajax({ 键入:“获取”, url:“textman.php”, 成功:功能(数据){ $('#textbaz')。追加(数据); var file=data.split(“”); var集=0; console.log(文件); $('#textbaz')。追加(); } }); $(“#文本框”).keypress(函数(){ log($(“#textbox”).val()); }); 返回false; }),javascript,jquery,Javascript,Jquery,问题是,它只是不记录#textbox的值。无论我在那里键入什么,它都没有效果D:尝试此-(使用.on()动态创建元素的事件委派) 试试这个-(使用.on()动态创建元素的事件委派) 您需要为动态添加的元素使用: $('#textbaz').on('keypress',"#textbox",function() { console.log($(this).val()); }); 您需要为动态添加的元素使用: $('#textbaz').on('keypress',"#textbox",fun
.on()
动态创建元素的事件委派)
试试这个-(使用.on()
动态创建元素的事件委派)
您需要为动态添加的元素使用:
$('#textbaz').on('keypress',"#textbox",function() {
console.log($(this).val());
});
您需要为动态添加的元素使用:
$('#textbaz').on('keypress',"#textbox",function() {
console.log($(this).val());
});
AJAX是异步的。您正在将
按键
侦听器绑定到#文本框
,然后它才存在于DOM中。在$(“#textbox”).keypress(…
行中,$(“#textbox”)
的结果将是一个空对象,因此任何元素都不会注册活页夹
您需要使用委派事件(在上使用):
…这只要求调用时#textbaz
可用,或在AJAX回调中注册事件:
$('#textbaz').on('keypress', '#textbox', function() { ... });
成功:函数(数据){
...
$('#textbaz')。追加(
);
$('#textbox').keypress(function(){…});
}
…这确保了对.keypress
的调用将在#textbaz
附加了文本框之后进行,因此在创建了#textbox
之后进行。AJAX是异步的。您正在将keypress
侦听器绑定到#textbox
,然后它就存在于DOM中。在行中$(“#textbox”)。按(…
,$(“#textbox”)
的结果将是一个空对象,因此任何元素都不会注册活页夹
您需要使用委派事件(在
上使用):
…这只要求调用时#textbaz
可用,或在AJAX回调中注册事件:
$('#textbaz').on('keypress', '#textbox', function() { ... });
成功:函数(数据){
...
$('#textbaz')。追加(
);
$('#textbox').keypress(function(){…});
}
…这确保了对.keypress
的调用将在#textbaz
附加了文本框之后进行,因此在创建了#textbox
之后进行。$。ajax是一个异步调用,因此$(“#textbox”)。keypress()
很可能在成功函数中附加html之前执行。移动$(“#textbox”)。在成功函数中的append()调用后直接按键,它应该可以工作
或者,您可以使用
success: function(data) {
...
$('#textbaz').append("<br><input id='textbox' type='text' placeholder='Type it man, your on the clock!'>");
$('#textbox').keypress(function() { ... });
}
用于动态添加的元素。$。ajax是一个异步调用,因此$(“#textbox”).keypress()很可能在将html附加到success函数之前执行。在success函数中的append()调用之后直接移动$(“#textbox”).keypress,它应该可以工作
或者,您可以使用
success: function(data) {
...
$('#textbaz').append("<br><input id='textbox' type='text' placeholder='Type it man, your on the clock!'>");
$('#textbox').keypress(function() { ... });
}
用于动态添加的元素。您的代码发送一个HTTP请求,然后将事件处理程序绑定到#textbox
的所有实例。稍后HTTP响应将到达,成功
处理程序将创建#textbox
将用于绑定事件处理程序的逻辑移动到成功
处理程序中。您的代码发送一个HTTP请求,然后将事件处理程序绑定到\textbox
的所有实例。稍后HTTP响应将到达,成功
处理程序将创建\textbox
将用于绑定事件处理程序的逻辑移动到成功
处理程序中。它只是不记录#textbox的值。这不是一个真正的错误,也不奇怪。@undefined-否,但这是一个问题。(此问题不会导致报告任何错误消息)。一个更大的问题是这个问题的几乎无限排列。这肯定是重复的吗?它只是不记录#textbox的值。这不是一个真正的错误,也不奇怪。@未定义-不,但这是一个问题。(这个问题不会导致报告任何错误消息).一个更大的问题是这个问题的几乎无限排列。这肯定是重复的吗?