jQuery实现html双向绑定功能示例


Posted in jQuery onOctober 09, 2017

本文实例讲述了jQuery实现html双向绑定功能。分享给大家供大家参考,具体如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<script>
var user = new User('123');
$(function(){
user.set( "name", "99" );
});
 function GetData() {
  alert(user.attributes.name);
 }
function DataBinder( object_id ) {
 var pubSub = jQuery({});
 var data_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.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 );
   }
  });
 });
 return pubSub;
}
function User( uid ) {
 var binder = new DataBinder( 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
   };
 binder.on( uid + ":change", function( evt, attr_name, new_val, initiator ) {
  if ( initiator !== user ) {
   user.set( attr_name, new_val );
  }
 });
  return user;
 }
</script>
</head>
<body>
<input type="text" data-bind-123="name" /><br/>
<input type="button" onclick="GetData();" value="获取数据"></div>
</body>
</html>

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
jQuery 循环遍历改变a标签的href(实例讲解)
Jul 12 jQuery
基于jQuery的表单填充实例
Aug 22 jQuery
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
Aug 23 jQuery
jQuery实现表单动态添加数据并提交的方法
Jul 19 jQuery
jQuery实现的简单手风琴效果示例
Aug 29 jQuery
Jquery的Ajax技术使用方法
Jan 21 jQuery
详解jQuery中的getAll()和cleanData()
Apr 15 jQuery
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
jQuery删除/清空指定元素的所有子节点实例代码
Jul 04 jQuery
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
jQuery实现二级导航菜单的示例
Sep 30 jQuery
jqueryUI tab标签页代码分享
Oct 09 #jQuery
jQuery ajax调用webservice注意事项
Oct 08 #jQuery
jQuery完成表单验证的实例代码(纯代码)
Sep 30 #jQuery
jquery之基本选择器practice(实例讲解)
Sep 30 #jQuery
jquery鼠标悬停导航下划线滑出效果
Sep 29 #jQuery
jQuery选择器之子元素过滤选择器
Sep 28 #jQuery
jQuery选择器之属性过滤选择器详解
Sep 28 #jQuery
You might like
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
php之CodeIgniter学习笔记
2013/06/17 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
PHP精确到毫秒秒杀倒计时实例详解
2019/03/14 PHP
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
2020/03/30 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
基于JavaScript实现焦点图轮播效果
2017/03/27 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
element vue Array数组和Map对象的添加与删除操作
2018/11/14 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序
2019/07/08 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
实例讲解python函数式编程
2014/06/09 Python
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
简单上手Python中装饰器的使用
2015/07/12 Python
基于Python批量生成指定尺寸缩略图代码实例
2019/11/20 Python
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
大学本科生的个人自我评价
2013/12/09 职场文书
通报表扬范文
2015/01/17 职场文书
干部培训简讯
2015/07/20 职场文书
参加招聘会后的感想
2015/08/10 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
SONY AN-LP1 短波有源天线放大器
2021/04/22 无线电
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js
使用JS实现简易计算器
2021/06/14 Javascript