2017-02-22 125 views
0

当我在<span>点击,跨度变化的输入字段事件replaceWith()后,不会触发

$('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'); 
     } 
    }); 
}); 

之后,我需要当输入变为赶上

但它不会触发$('input').on('change', function() {函数了...

+2

大部分的时间(如果不总是)如果jQuery的去除元素DOM,它也销毁了所有连接到它的听众。 – hlfrmn

+0

@George yes一切都包裹在'''$(document).ready(function()''' – yooouuri

+0

_ .on()方法将事件处理程序附加到jQuery对象中当前选定的一组元素,并且您的输入isn' ('change',function(){'执行 – George

回答

2

你可以尝试用这个代替

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

希望的帮助

+0

谢谢,它的工作原理! – yooouuri

+0

欢迎,很高兴知道它的工作。干杯 – pinoyCoder

1

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

$(document).on('change', '.item', function(event) { 

参考jQuery doc

+0

谢谢,它的工作原理! – yooouuri

+0

我们可以向元素添加唯一类并绑定到该元素将最小化绑定范围 – Anil

+0

@Yooouuri,如果它的工作,接受作为回答将有助于其他谁将在这里出现同样的问题。 – Anil