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

(0)

相关推荐

  • 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){

  • jQuery fadeOut 异步实例代码详解

    定义和用法 fadeOut() 方法逐渐改变被选元素的不透明度,从可见到隐藏(褪色效果). 注释:隐藏的元素不会被完全显示(不再影响页面的布局). 提示:该方法通常与 fadeIn() 方法一起使用. 语法 $(selector).fadeOut(speed,easing,callback) 1. 概述 jquery实现动画效果的函数使用起来很方便,不过动画执行是异步的,所以要把自定义的操作放在回调函数里. 2. example <html> <body> <table id

  • jQuery自定义数值抽奖活动代码

    本文实例为大家分享了jquery输入数字随机抽奖特效代码,供大家参考,具体内容如下 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>jQuery自定义数值抽奖活动代码 - 何问起</title><base target="_blank" /> <script type="text/ja

  • jQuery遍历Form示例代码

    jQuery 遍历 Form,代码如下 复制代码 代码如下: <script type="text/javascript"> // 取得 id 为form1 的 form 的所有输入变量 values = $("#form1").serializeArray(); var values, index; for (index = 0; index < values.length; ++index) { if (values[index].name =

  • jquery css 选择器演示代码

    效果如图所示:核心代码: 复制代码 代码如下: <script type="text/javascript"> $('#one').css("background","#fff"); $('div').css("background","#fff"); $('body div').css("background","#bbffaa");//改变body内所

  • 全面解析DOM操作和jQuery实现选项移动操作代码分享

    DOM: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-"> <title>DOM选项移动操作</title> <style> select { width: px; height: px; } div { display: inline-block; width: px } </style> <

  • jquery实现滑动特效代码

    在项目中,有需求要使用jquery实现滑动效果,于是把相关内容整理如下,下文介绍了很详细,有文字说明和代码分析,需要的朋友可以来学习下. 实现方式一:  .slideUp([duration][,complete])--目标元素向上滑入隐藏: .slideDown([duration][,complete])--目标元素向下滑出显示: .slideToggle([duration][,complete])--目标元素隐藏则向下滑出显示,否则向上滑入隐藏: 注:duration为方法执行的时间区间

  • jQuery 页面 Mask实现代码

    在 Ajax 应用中,显示一个 Dialog(以 Div 方式显示)前,都会先建一个 Mask.因为经常会用到,所以写成了一个 jQuery 插件,方便自己的使用. 复制代码 代码如下: (function($){ $.extend({ documentMask: function(options){ // 扩展参数 var op = $.extend({ opacity: 0.8, z: 10000, bgcolor: '#000' }, options); // 创建一个 Mask 层,追加

  • jQuery+HTML5加入购物车代码分享

    这是一款基于jquery+html5实现的支持累加计价的网站购物车代码,可以把货物添加到购物车,添加物品数量,如果想取消购置某物品,这个功能也是可以实现的. 运行效果图:-----------------------------------查看效果----------------------------------- 为大家分享的jQuery+HTML5加入购物车代码如下 <head lang="en"> <meta charset="UTF-8"

  • jquery实现放大镜简洁代码(推荐)

    简介 网上有许多放大镜的jquery的插件,但是用着不是那么得心应手,现在一页代码实现一个放大镜功能,如果需要附加的功能可以手动修改,原理都在注释里 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>放大镜效果</title> <style type="text/css"> * { margin: 0; paddi

随机推荐