2013-05-16 107 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