Javascript 关于事件don';在replacetwith()之后触发

Javascript 关于事件don';在replacetwith()之后触发,javascript,jquery,Javascript,Jquery,当我点击一个时,范围变为一个输入字段 $('table td').on('click', 'span', function() { var $el = $(this); var $input = $('<input/>').val($el.text()).attr('class', 'form-control'); $el.replaceWith($input); var save = function() { var $p = $

当我点击一个
时,范围变为一个输入字段

$('table td').on('click', 'span', function() {
    var $el = $(this);

    var $input = $('<input/>').val($el.text()).attr('class', 'form-control');
    $el.replaceWith($input);

    var save = function() {
        var $p = $ ('<span>').text( $input.val() );
        $input.replaceWith($p);
    };

    $input.one('blur', save).focus();
});

$('input').on('change', function() {
    var target = $(this);

    $.ajax({
        url: 'url',
        data: {
            value: target.val(),
            ruleId: target.data('rule'),
            date: target.data('date')
        },
        type: 'POST',
        success: function(data) {
            console.log('updated');
        }
    });
});
$('table td')。在('click','span',function()上{
var$el=$(本);
var$input=$('').val($el.text()).attr('class','form control');
$el.replaceWith($input);
var save=function(){
var$p=$('').text($input.val());
$input.replaceWith($p);
};
$input.one('blur',save).focus();
});
$('input')。在('change',function()上{
var目标=$(此);
$.ajax({
url:'url',
数据:{
值:target.val(),
ruleId:target.data('rule'),
日期:target.data(“日期”)
},
键入:“POST”,
成功:功能(数据){
console.log('updated');
}
});
});
之后,我需要捕捉输入何时更改

但它不会触发
$('input')。在('change',function(){
函数上…

将事件绑定到文档而不是元素将解决您的问题。

请参阅将事件绑定到文档而不是元素将解决您的问题。


参考

你能试着改用这个吗

$(document).on('change','input',function(){
 // your code here
}

希望有帮助

你能试着用这个来代替吗

$(document).on('change','input',function(){
 // your code here
}

如果jQuery从DOM中删除一个元素,它也会销毁所有附加到它的侦听器。@George yes所有内容都包装在
$(文档)中。就绪(函数()
the.on())方法将事件处理程序附加到jQuery对象中当前选定的元素集,并且当
$('input')时,您的输入不在DOM上。在('change',函数(){
从附加信息中执行:“.replaceWith()方法删除与删除的节点关联的所有数据和事件处理程序。”您可以始终使用本机(以及相对较新的)DOM API:
$el[0].replaceWith($other[0])
大多数情况下(如果不总是这样),如果jQuery从DOM中删除一个元素,它也会销毁附加到它的所有侦听器。@George yes所有内容都包装在
$(文档)中。就绪(函数()
the.on()方法将事件处理程序附加到jQuery对象中当前选定的元素集,并且当
$('input')时,您的输入不在DOM上。在('change',函数(){
从附加信息中执行:“.replaceWith()方法删除与删除的节点关联的所有数据和事件处理程序。”您可以始终使用本机(以及相对较新的)DOM API:
$el[0].replaceWith($other[0])
我们可以将唯一类添加到元素并绑定到该元素,这样可以最小化绑定范围。@Yooouuri,如果它起作用,那么接受作为答案将有助于其他将在这里遇到相同问题的人。我们可以将唯一类添加到元素并绑定到该元素,这样可以最小化绑定范围。@Yooouuri,如果它起作用,那么接受作为答案将有帮助对其他将因同样问题在这里着陆的人有所帮助。