<! DOCTYPE html>functionDataBinder (object_id) {varPubSub =jQuery ({}); vardata_attr = "bind-" +object_id, Message= object_id+ ": Change"; JQuery (document). On ("Change", "[data-" + data_attr + "]",function(evt) {var$input = JQuery ( This); Pubsub.trigger (message, [$input. attr ("Data-" +data_attr), $input. Val ()]); }); Pubsub.on (Message,function(evt,prop_name,new_val) {jQuery ("[data-" + data_attr + "=" + Prop_name + "]"). each (function(){ var$bound = JQuery ( This); if($bound. Is ("Input,textarea,select") {$bound. val (new_val); } Else{$bound. html (new_val); } }); }); returnPubSub; } functionUser (UID) {varBinder =NewDataBinder (UID), user={attributes: {}, set:function(attr_name,val) { This. attributes[attr_name] =Val; Binder.trigger (UID+ ": Change", [Attr_name, Val, This]); }, get:function(attr_name) {return This. Attributes[attr_name]; }, _binder:binder}; returnuser; } varuser =NewUser (0); User.set ("Name", "text"); </script></body>Simple data two-way binding with jquery