Html
    Css
    Js
1
2
3
4
5
6
7
<input data-bind="value" vname="sex" value="" style="display: inline;">
<input data-bind="value" vname="sex" value="" data-share="value" style="display: inline;">
<div data-share="html" vname="sex">
</div>
<input type="button" id="demo" value="JS">
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
;(function($) {
BindSysnc.pt = BindSysnc.prototype;
BindSysnc.pt.init = function(selector) {
var $allBinds = $(selector).find("[data-bind]");
var $container = $("<div class='data-bind-contanier'></div>");
var data = {};
var share = new ShareSync(selector);
for(var bindIndex = 0; bindIndex < $allBinds.length; bindIndex++) {
var oldElement = $($allBinds[bindIndex]);
var bindElement = oldElement.clone(true);
var convertElement = $container.clone(true);
convertElement.css("display", oldElement.css("display"));
convertElement.append(bindElement);
var dsi = $("<div data-bind-value></div>");
bindElement.attr("data-share-excute", "false");
bindElement.on("propertychange input focus blur DOMNodeInserted", function(e) {
if($(e.target).attr("data-share") !== undefined) {
$(e.target).unbind("propertychange");
}
var value = $(e.target).attr("data-bind") === "value" ? $(e.target).val() : $(e.target).html();
data[$(e.target).attr("vname")] = value;
$(e.target).parent().children("[data-bind-value]").html(value);
share.share(data);
});
convertElement.insertAfter(oldElement);
oldElement.remove();
}
this.data = data;
this.isAutoShare = false;
var that = this;
var timer = new TimerSimulator(function(count){
share.share(that.data);
},500,"test");
this.startAutoShare = function(){
timer.start();
}
this.stopAutoShare = function(){
timer.stop();
}
if(this.isAutoShare){
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
↑上面代码改变,会自动显示代码结果 jQuery调用版本:1.11.3
 立即下载

JQuery 类似Vue.js的双向数据绑定器

HTML DOM属性介绍:

vname:属性名称 data-share :表示数据共享,也就是凡是vname值定义相同的都将拥有相同的值。 data-bind:表示绑定数据,当HTML中的数据变化时,JS对象值也随之变化。

其中 data-share,data-bind的取值为:value,html。value表示绑定该区域的值域,html表示绑定该元素的html内容。

构造方法分为两种:

一种

$B("body");
$BindSysnc("body");

二种

new $B("body");//简写
new $BindSysnc("body");//原

取JS对象中的值

$(function()){
    //body 区域的内容都是一个对象
    var b = $B("body");

    b.data;//包含body里对象的值域。
});

从例子中取属性vname定义为性别属性sex. 

所以要取最新的sex值可以向下面做

$(function()){
    //body 区域的内容都是一个对象
    var b = $B("body");

    var sex = b.data.sex;//取Sex最新的值
});
//你可以通过打开自动共享
  b.startAutoShare();		
//关闭共享
b.stopAutoShare();
2
      饭吃了没。0
      2017/9/4 9:26:13
      //建议在BindSysnc.pt.init 函数加上这个。用于支持手动更新
      this.share = function(){
          share.share(that.data);
      }

      手动更新方法

      $(function()){
          //body 区域的内容都是一个对象
          var b = $B("body");
          var sex = b.data.sex;//取Sex最新的值   
          b.data.sex = 41;
          b.share();
      });
      回复
      饭吃了没。0
      2017/9/2 12:20:53

      上方例子,在22秒后,数据将被自动更新成123124124

      回复