关于jq建立类似与双向绑定的函数

Posted chenlongsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于jq建立类似与双向绑定的函数相关的知识,希望对你有一定的参考价值。

函数:  

/**
* 页面元素与数据绑定
* @param elementIds
*/
function bindData(data){
var listener = {};
$("input,select,textarea").each(function(i,item){
if($(item).attr("id") != null){
data[$(item).attr("id")] = "";
$(item).change(function(){
if(data[$(this).attr("id")] == $(this).val()) return;
data[$(this).attr("id")] = $(this).val();
// parent.layer.msg("change:" + $(this).attr("id") + "的值变更为:" + $(this).val());
});

listener[$(item).attr("id")] = {
get: function() {
// parent.layer.msg("get:" + $(item).attr("id") + "的值为:" + $(item).val());
return $(item).val();
},
set: function(value) {
if(value == $(item).val()) return;
$(item).val(value);
data[$(item).attr("id")] = value;
// parent.layer.msg("set:" + $(item).attr("id") + "的值变更为:" + value);
}
};
if($("input,select,textarea").size() == i + 1){
Object.defineProperties(data, listener);
}
}
});

在页面js文件中需要调用函数
$(function(){
bindData(data); //将页面元素与data中的属性绑定,可通过data.xx获取对应ID元素的值

});

之后可以使用: 如 获取数据: var xx=data.xx;
修改数据: data.xx="xxx";











































以上是关于关于jq建立类似与双向绑定的函数的主要内容,如果未能解决你的问题,请参考以下文章

Angularjs双向绑定

关于JQ中,新生成的节点on绑定事件失效的解决

React 事件对象键盘事件表单事件ref获取dom节点react实现类似Vue双向数据绑定

关于jq将一个页面引入另一个页面,类似与组件化的解决方案

js 超浓缩 双向绑定

jQ选择器学习片段(JavaScript 部分对应)