2013-05-16 145 views
1

我正在學習jQuery。我想添加一個功能,所以當用戶點擊具有指定類名的td時,我想將其更改爲select選項。並與選定的值,我想更新我的分貝。jQuery替換元素和訪問替換元素

直到這裏它沒關係。我可以將td更改爲input但是,我無法將更改事件上的事件添加到該替換元素。

以下是我有:

(function($) { 

    var _defaults = { 
     some : "defaults", 
    }; 

    $.fn.changetoi = function(options) { 

     var _opts = $.extend({}, _defaults, options); 

     $(this).on('click', function() { 
      var replaced = $('<select name="status" class="changer"><option>Test</option></select>'); 
      $(this).replaceWith(replaced); 
     }); 

     $('.changer').on('change', function() { //here I'm try to access the changed element 
      var value = $(".changer option:selected").text(); 
      //post the selected value 
      $.post("test.php", { 
       "value" : value 
      }, function(data) { 
       //whatever and 
       $(this).replaceWith(value); 
      }); 
     }); 

    }; 

    $('.change').changetoi(); 
})(jQuery); 

這裏是表格,測試和小提琴等http://jsfiddle.net/HZvH8/4/

回答

2

你需要做的處理,像這樣:

$(document).on('change', '.changer', function() { 

這元素在DOM準備就緒時不存在,因此您將change()事件綁定到那裏的元素。

演示:http://jsfiddle.net/tymeJV/HZvH8/5/

+0

我不知道那個謝謝。那麼我們是否可以假設在頁面加載後更改的所有元素都不存在於DOM,我們需要添加一個類似的事件? – onurfoca

+0

DOM準備好之後添加的元素應該通過'.on()'綁定處理程序 - http://api.jquery.com/on/ – tymeJV