Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery未注册单击_Jquery_Dynamic - Fatal编程技术网

jQuery未注册单击

jQuery未注册单击,jquery,dynamic,Jquery,Dynamic,我遇到的问题是,我可以单击我的元素开始,一切都相应地工作,但是当我按S键从textarea->段落更改我的元素后,我不能再单击,也不会注册任何单击 $(document).ready(function() { $('#dynamic').click(function() { log('`Clicked`'); var text = $('#dynamic').text(); $('#dynamic').replaceWith('<te

我遇到的问题是,我可以单击我的元素开始,一切都相应地工作,但是当我按S键从textarea->段落更改我的元素后,我不能再单击,也不会注册任何单击

$(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')。替换为(''+文本+'');
});

工作正常!感谢堆:)工作完美!谢谢你:)