jQuery前臺(tái)數(shù)據(jù)獲取實(shí)現(xiàn)代碼
更新時(shí)間:2011年03月16日 23:16:19 作者:
jQuery前臺(tái)數(shù)據(jù)獲取實(shí)現(xiàn)代碼,需要的朋友可以參考下。
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) {
//遞歸調(diào)用 處理子元素
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){
//處理行,找出行中的要收集數(shù)據(jù)的元素
var subItems =$j(this).find(subSelector);
var subStr = "";
//迭代處理行中所有需要收集數(shù)據(jù)的元素
$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;
//獲取當(dāng)前列的列索引
var colIndex = t.prevAll().length;
//dataName由列的的列頭中dataName屬性決定,如果找不到由列頭的內(nèi)容決定
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);
復(fù)制代碼 代碼如下:
/// <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) {
//遞歸調(diào)用 處理子元素
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){
//處理行,找出行中的要收集數(shù)據(jù)的元素
var subItems =$j(this).find(subSelector);
var subStr = "";
//迭代處理行中所有需要收集數(shù)據(jù)的元素
$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;
//獲取當(dāng)前列的列索引
var colIndex = t.prevAll().length;
//dataName由列的的列頭中dataName屬性決定,如果找不到由列頭的內(nèi)容決定
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);
復(fù)制代碼 代碼如下:
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);
相關(guān)文章
jQuery實(shí)現(xiàn)的響應(yīng)鼠標(biāo)移動(dòng)方向插件用法示例【附源碼下載】
這篇文章主要介紹了jQuery實(shí)現(xiàn)的響應(yīng)鼠標(biāo)移動(dòng)方向插件用法,涉及jQuery響應(yīng)鼠標(biāo)事件及頁(yè)面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-08-08
append和appendTo的區(qū)別以及appendChild用法
很多新手朋友們對(duì)append和appendTo的區(qū)別以及js中的appendChild用法有所模糊,下面就舉例為大家詳細(xì)介紹下,感興趣的朋友不要錯(cuò)過(guò)2013-12-12
jQuery實(shí)現(xiàn)郵箱下拉列表自動(dòng)補(bǔ)全功能
在一些網(wǎng)站我們經(jīng)??吹疆?dāng)我們要輸入郵箱的時(shí)候,還沒(méi)有填寫完,就會(huì)出現(xiàn)一系列下拉列表,幫助我們自動(dòng)補(bǔ)全郵箱,怎么實(shí)現(xiàn)的呢?今天下面給大家分享基于jquery實(shí)現(xiàn)郵箱下拉列表自動(dòng)補(bǔ)全功能,一起看看吧2016-09-09
批量修改標(biāo)簽css樣式以input標(biāo)簽為例
本節(jié)主要介紹了jquery如何批量修改標(biāo)簽css樣式以input標(biāo)簽為例,需要的朋友可以參考下2014-07-07
jQuery文本框得到與失去焦點(diǎn)動(dòng)態(tài)改變樣式效果
這篇文章主要介紹了jQuery文本框得到與失去焦點(diǎn)動(dòng)態(tài)改變樣式效果,涉及jQuery針對(duì)頁(yè)面表單元素樣式的動(dòng)態(tài)操作技巧,需要的朋友可以參考下2016-09-09
jQuery實(shí)現(xiàn)移動(dòng)端懸浮拖動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)移動(dòng)端懸浮拖動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
JQuery觸發(fā)radio或checkbox的change事件
在JQuery中,當(dāng)給radio或checkbox添加一個(gè)change事件時(shí),如果它的值發(fā)生變化就會(huì)觸發(fā)change事件;本文將詳細(xì)介紹如何利用JQuery觸發(fā)Checkbox的change事件需要了解的朋友可以參考下2012-12-12

