jQuery未注册单击
我遇到的问题是,我可以单击我的元素开始,一切都相应地工作,但是当我按S键从textarea->段落更改我的元素后,我不能再单击,也不会注册任何单击jQuery未注册单击,jquery,dynamic,Jquery,Dynamic,我遇到的问题是,我可以单击我的元素开始,一切都相应地工作,但是当我按S键从textarea->段落更改我的元素后,我不能再单击,也不会注册任何单击 $(document).ready(function() { $('#dynamic').click(function() { log('`Clicked`'); var text = $('#dynamic').text(); $('#dynamic').replaceWith('<te
$(document).ready(function() {
$('#dynamic').click(function() {
log('`Clicked`');
var text = $('#dynamic').text();
$('#dynamic').replaceWith('<textarea id="dynamic">' + text + '</textarea>');
});
$(document).keydown(function(e) {
log(e.which);
switch(e.which) {
// S key
case 83:
if ($('#dynamic').is('textarea')) {
var text = $('#dynamic').val();
$('#dynamic').replaceWith('<p id="dynamic">' + text + '</p>');
}
break;
default: return;
}
e.preventDefault();
});
});
$(文档).ready(函数(){
$(“#动态”)。单击(函数(){
日志(`Clicked`');
var text=$('#dynamic').text();
$('#dynamic')。替换为(''+文本+'');
});
$(文档).keydown(函数(e){
日志(e.which);
开关(e.which){
//S键
案例83:
if($('#dynamic').is('textarea')){
var text=$('#dynamic').val();
$('#dynamic')。替换为(''+text+'
');
}
打破
默认:返回;
}
e、 预防默认值();
});
});
这是我正在使用的代码,它注册了第一次单击,但不是元素转换后的第二次单击。:) 返回的$('#dynamic')
元素不再存在。您必须使用事件委派来绑定事件处理程序:
$(document).on('click', '#dynamic', function() {
...
});
$('#dynamic')
返回的元素已不存在。您必须使用事件委派来绑定事件处理程序:
$(document).on('click', '#dynamic', function() {
...
});
当您替换原始元素时,它将与直接绑定到它的任何处理程序一起消失。您可以在重新创建处理程序的位置重新绑定该处理程序,也可以使用委派的事件处理程序,在这种情况下,您可能希望添加一个关于元素是否已经是textarea的测试:
$(document).on('click', '#dynamic', function() {
if (this.tagName === "TEXTAREA") return; // already a textarea, so no action needed
log('`Clicked`');
var text = $('#dynamic').text();
$('#dynamic').replaceWith('<textarea id="dynamic">' + text + '</textarea>');
});
$(文档).on('click','#dynamic',function(){
如果(this.tagName==“TEXTAREA”)返回;//已经是一个TEXTAREA,因此无需执行任何操作
日志(`Clicked`');
var text=$('#dynamic').text();
$('#dynamic')。替换为(''+文本+'');
});
当您替换原始元素时,它就消失了——以及直接绑定到它的任何处理程序。您可以在重新创建处理程序的位置重新绑定该处理程序,也可以使用委派的事件处理程序,在这种情况下,您可能希望添加一个关于元素是否已经是textarea的测试:
$(document).on('click', '#dynamic', function() {
if (this.tagName === "TEXTAREA") return; // already a textarea, so no action needed
log('`Clicked`');
var text = $('#dynamic').text();
$('#dynamic').replaceWith('<textarea id="dynamic">' + text + '</textarea>');
});
$(文档).on('click','#dynamic',function(){
如果(this.tagName==“TEXTAREA”)返回;//已经是一个TEXTAREA,因此无需执行任何操作
日志(`Clicked`');
var text=$('#dynamic').text();
$('#dynamic')。替换为(''+文本+'');
});
工作正常!感谢堆:)工作完美!谢谢你:)