1234567data-bind="value" vname="sex" value="男" style="display: inline;"data-bind="value" vname="sex" value="男" data-share="value" style="display: inline;"data-share="html" vname="sex"type="button" id="demo" value="获得JS对象的值"
1
12345678910111213141516171819202122232425262728293031323334353637383940414243;(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){
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();
//建议在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(); });回复