2017-02-22 123 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