作家
登录

jQuery前台数据获取实现代码

作者: 来源:www.28hudong.com 2013-03-30 00:57:26 阅读 我要评论

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);

  推荐阅读

  js无限级折叠菜单精简版

无限级折叠菜单 1.01 JS版 无限级折叠菜单 1.0.1 JS版 菜单_1_1 菜单_2_1 菜单_3_1 菜单_4_1 菜单_5_1 菜单_5_2 菜单_4_2 菜单_5_1 菜单_5_2 菜>>>详细阅读


本文标题:jQuery前台数据获取实现代码

地址:http://www.17bianji.com/kaifa2/JS/24798.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)