jQueryフロントエンドデータ取得実装 code_jquery

WBOY
リリース: 2016-05-16 18:09:27
オリジナル
1259 人が閲覧しました

jProviderData

复制代码代码如下:

///

$j = jQuery.noConflict();
(関数 ($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("データ名");
if(データ名の種類 === '未定義'||データ名==""){
データ名 = item.attr("Id");
if(typeof dataName === '未定義'||dataName==""){
dataName=item.text();
}
if(typeof dataName === '未定義'| |dataName==""){
dataName=item[0].innerText;
return dataName
},
getData:function(selector){
// var selector=opts.selector;
var items;
if(typeof selector!=="object"){
items=$j(selector);
else{ >アイテム=セレクター;

var retJsonValue="";

if (opts.select_Span_Items) {
subSelector =サブセレクター ",スパン";
}
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:'{"データ名":"値"}'
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"}, {"データ名1":"値3","データ名2":"値4"}]'
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.文章();
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(",");
}
});

retJsonValue を返す;
}

};

jProviderData=function(オプション){
$j.providerData.init(オプション);
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);
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート