jQuery前台数据获取实现代码

  jProviderData

  

复制代码 代码如下:

  /// <reference path="jUtil.js" />

  $j = jQuery.noConflict();

  (function ($j) {

  $j.providerData={

  defaultSettings: {

  select_Span_Items: false,

  select_TD_Items: false,

  select_LI_Items: false

  },

  init:function(options){

  opts = $j.extend({}, $j.providerData.defaultSettings, options);

  singleItemJsonFormat='"{0}":"{1}"';

  divItemFormat='{{0}}';

  tableItemFormat='{0}';

  },

  getDataName:function(item){

  var dataName = item.attr("dataname");

  if(typeof dataName === 'undefined'||dataName==""){

  dataName = item.attr("Id");

  }

  if(typeof dataName === 'undefined'||dataName==""){

  dataName=item.text();

  }

  if(typeof dataName === 'undefined'||dataName==""){

  dataName=item[0].innerText;

  }

  return dataName;

  },

  getData:function(selector){

  //var selector=opts.selector;

  var items;

  if(typeof selector!=="object"){

  items=$j(selector);

  }

  else{

  items=selector;

  }

  var retJsonValue="";

  var subSelector=":input";

  if (opts.select_Span_Items) {

  subSelector = subSelector + ",span";

  }

  if (opts.select_LI_Items) {

  subSelector = subSelector + ",li";

  }

  if(opts.select_TD_Items){

  subSelector = subSelector + ",td";

  }

  $j.each(items,function(i,item){

  var t=$j(this);

  var dataName=$j.providerData.getDataName(t);

  //return:'{"dataname":"value"}'

  if($j.util.isInput(t)){

  var value=t.val();

  var itemStr= String.format(singleItemJsonFormat,dataName,value);

  retJsonValue=retJsonValue+itemStr+",";

  retJsonValue=retJsonValue.trimEnd(",");

  }

  //return:'{"dataname1":"value1","dataname2":"value2"}'

  else if($j.util.isDiv(t)){

  var subItems = t.find(subSelector);

  var subStr = "";

  $j.each(subItems, function (i, subItem) {

  //递归调用 处理子元素

  var tempSubItemStr = $j.providerData.getData("#"+$j(this).attr("id"));

  subStr = subStr + "," + tempSubItemStr;

  })

  subStr=subStr.trimStart(",");

  retJsonValue=String.format(divItemFormat,subStr);

  }

  //return:'[{"dataname1":"value1","dataname2":"value2"},{"dataname1":"value3","dataname2":"value4"}]'

  else if($j.util.isTable(t)){

  var trItems=t.find("TR:gt(0)");

  //迭代处理Table中的每一行

  $j.each(trItems,function(i,trItem){

  //处理行,找出行中的要收集数据的元素

  var subItems =$j(this).find(subSelector);

  var subStr = "";

  //迭代处理行中所有需要收集数据的元素

  $j.each(subItems,function(i,subItem){

  if($j.util.isInput($j(this))){

  var tempSubItemStr = $j.providerData.getData("#"+$j(this).attr("id"));

  subStr = subStr + "," + tempSubItemStr;

  }

  else{

  //如果是TD元素,且他里面不包含INPUT元素

  if( $j.util.isTD($j(this)) && ($j(this).find(":input").length==0)){

  var tempSubItemStr = $j.providerData.getData($j(this));

  subStr = subStr + "," + tempSubItemStr;

  }

  }

  });

  subStr=subStr.trimStart(",");

  retJsonValue= retJsonValue+String.format(divItemFormat,subStr)+",";

  });

  retJsonValue=retJsonValue.trimEnd(",");

  retJsonValue="["+retJsonValue+"]";

  }

  //return:'{"dataname":"value"}'

  else if($j.util.isLi(t)){

  var value=t.text();

  var itemStr= String.format(singleItemJsonFormat,dataName,value);

  retJsonValue=retJsonValue+itemStr+",";

  retJsonValue=retJsonValue.trimEnd(",");

  }

  //return:'{"dataname":"value"}'

  else if($j.util.isTD(t)){

  var value=t.text();

  // var rowIndex = t.parent().prevAll().length;

  //获取当前列的列索引

  var colIndex = t.prevAll().length;

  //dataName由列的的列头中dataName属性决定,如果找不到由列头的内容决定

  var thItem=t.parent().parent().parent().find("th:eq("+colIndex+")");

  if(thItem.length==1){

  dataName=$j.providerData.getDataName(thItem);

  }

  var itemStr= String.format(singleItemJsonFormat,dataName,value);

  retJsonValue=retJsonValue+itemStr+",";

  retJsonValue=retJsonValue.trimEnd(",");

  }

  });

  return retJsonValue;

  }

  };

  jProviderData=function(options){

  $j.providerData.init(options);

  return $j.providerData.getData(options.selector);

  };

  })(jQuery);

  

复制代码 代码如下:

  String.prototype.trimStart = function(trimStr){

  if(!trimStr){return this;}

  var temp = this;

  while(true){

  if(temp.substr(0,trimStr.length)!=trimStr){

  break;

  }

  temp = temp.substr(trimStr.length);

  }

  return temp;

  };

  String.prototype.trimEnd = function(trimStr){

  if(!trimStr){return this;}

  var temp = this;

  while(true){

  if(temp.substr(temp.length-trimStr.length,trimStr.length)!=trimStr){

  break;

  }

  temp = temp.substr(0,temp.length-trimStr.length);

  }

  return temp;

  };

  String.prototype.trim = function(trimStr){

  var temp = trimStr;

  if(!trimStr){temp=" ";}

  return this.trimStart(temp).trimEnd(temp);

  };

  String.format = function () {

  if (arguments.length == 0) {

  return null;

  }

  var str = arguments[0];

  for (var i = 1; i < arguments.length; i++) {

  var re = new RegExp('\\{' + (i - 1) + '\\}', 'gm');

  str = str.replace(re, arguments[i]);

  }

  return str;

  }

  (function ($j) {

  $j.util = {

  _compareTagName : function (item, tagName) {

  return item.attr("tagName").toUpperCase() == tagName.toUpperCase();

  },

  isTable: function (item) {

  return $j.util._compareTagName(item, "TABLE");

  },

  isDiv: function (item) {

  return $j.util._compareTagName(item, "DIV");

  },

  isInput: function (item) {

  return $j.util._compareTagName(item, "INPUT");

  },

  isSpan: function (item) {

  return $j.util._compareTagName(item, "SPAN");

  },

  isLi: function (item) {

  return $j.util._compareTagName(item, "LI");

  },

  isTD: function (item) {

  return $j.util._compareTagName(item, "TD");

  }

  };

  })(jQuery);