基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)


Posted in Javascript onJuly 31, 2012

在线演示: http://demo.3water.com/js/2012/jqueryAutoAddDeleteTableTr/jqueryAutoAddDeleteTableTr_leftClick.html
//左键 

<html> 
<head> 
<title>jQuery 动态增删表格</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript" src="http://demo.3water.com/jslib/jquery/jquery-1.6.2.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(document).ready(function(){ 
var addToTrTop = 10; 
var addToTrLeft = 534; 
var preEdit = null; 
var inputData = '<input id="tmpEditor" type="text" value="?"></input>'; 
var bindListening = function(){ 
//表格点击响应 
$("td").unbind().click(function(){ 
var tdData = $("#tmpEditor").val(); 
if( !$(this).parent().hasClass('editting')) { 
preEdit&&preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
$("#tmpEditor").parent().empty().html($("#tmpEditor").val()); 
$(".editting").removeClass('editting'); 
}else if( preEdit && (preEdit.parent().children().index($(preEdit)) != $(this).parent().children().index($(this))) ){ 
preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
}else{ 
if(!$("#tmpEditor").val()) { 
preEdit = $(this); 
var tdData = $(this).html(); 
$(this).empty().append(inputData.replace('?',tdData)); 
$("#tmpEditor").focus(); 
} 
} 
if(!$(this).parent().hasClass('editting')){ 
var tipStyle = 'top:'+(parseInt($(this).offset().top)+addToTrTop)+'px;left:'+(parseInt($(this).parent().offset().left)+addToTrLeft)+'px;'; 
$("#clickTips").attr('style',tipStyle).show(); 
} 
bindListening(); 
}); 
//向上增加一行 
$("#addUp").unbind().click(function(){ 
doAddTrData($(this),'up'); 
bindListening(); 
}); 
//向下增加一行 
$("#addDown").unbind().click(function(){ 
doAddTrData($(this),'down'); 
bindListening(); 
}); 
//删除当前行 
$("#delete").unbind().click(function(){ 
doDeleteTrData($(this),'delete'); 
bindListening(); 
}); 
//编辑当前行 
$("#edit").unbind().click(function(){ 
doEditTrData($(this),'edit'); 
bindListening(); 
}); 
var addTrData = $("tr:first").clone(true).attr('class','newAdd'); 
var getIndex = function(clickedTd,type){ 
var fields = $("tr"); 
var addIndex = -1; 
for(var i=1;i<fields.length;i++){ 
var tipStyle = clickedTd.parent().attr('style'); 
var topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+addToTrTop); 
var ie_topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+(addToTrTop-2)); 
if((tipStyle.indexOf(topValue) != -1) || (tipStyle.indexOf(ie_topValue) != -1)) { 
switch(type.toLowerCase()){ 
case 'up': 
addIndex = i-1; 
break; 
case 'down': 
case 'edit': 
case 'delete': 
addIndex = i; 
break; 
} 
} 
} 
return addIndex; 
} 
var doAddTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).after(addTrData); 
setTimeout('$(".newAdd").attr("class",null)',1000); 
$("#clickTips").hide(); 
return false; 
} 
var doDeleteTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).remove(); 
$("#clickTips").hide(); 
return false; 
} 
var doEditTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).addClass('editting'); 
$("#clickTips").hide(); 
return false; 
} 
} 
bindListening(); 
}); 
</script> 
<style type="text/css"> 
table{ 
width:580px; 
margin:0 auto; 
} 
td,#tmpEditor{ 
display:block; 
float:left; 
border:1px solid #000000; 
margin:auto 0.5px; 
width:60px; 
height:20px; 
} 
#clickTips{ 
border:1px solid #000000; 
position:absolute; 
left:3px; 
width:120px; 
padding:3px; 
display:none; 
background-color:#F5FFFA; 
z-index:3; 
} 
span{ 
float:left; 
width:100px; 
height:20px; 
clear:both; 
} 
.cloneTr{ 
display:none; 
} 
.newAdd td{ 
background-color:#FFFACD; 
} 
.editting td{ 
background-color:#F0F0F0; 
} 
</style> 
<div id="tableContainer"> 
<table> 
<tr class="cloneTr"> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>1</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>2</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>3</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>4</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>5</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>6</td> 
</tr> 
</table> 
</div> 
<div id="clickTips"> 
<span id="addUp">向上增加一行</span> 
<span id="edit">修改当前一行</span> 
<span id="addDown">向下增加一行</span> 
<span id="delete">删除当前行</span> 
</div> 
</body> 
</html>

jqueryAutoAddDeleteTableTr_rightClick.html
//右键(含屏蔽浏览器右键功能)
<html> 
<head> 
<title>jQuery 动态增删表格</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript" src="http://demo.3water.com/jslib/jquery/jquery-1.6.2.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(document).ready(function(){ 
var addToTrTop = 10; 
var addToTrLeft = 60; 
var preEdit = null; 
var inputData = '<input id="tmpEditor" type="text" value="?"></input>'; 
var bindListening = function(){ 
//屏蔽浏览器右键 
if (window.Event) document.captureEvents(Event.MOUSEUP); 
function nocontextmenu(e){ 
if(!e) var e=window.event; 
e.cancelBubble = true 
e.returnValue = false; 
return false; 
} 
function norightclick(e){ 
if(!e) var e=window.event; 
if (window.Event){ 
if (e.which == 2 || e.which == 3) 
return false; 
}else if (e.keyCode == 2 || e.keyCode == 3){ 
e.cancelBubble = true 
e.returnValue = false; 
return false; 
} 
} 
document.oncontextmenu = nocontextmenu; // for IE5+ 
document.onmousedown = norightclick; // for all others 
//End 屏蔽浏览器右键 
//表格右键响应 
$("td").mousedown(function(e){ 
var code; 
if(!e) var e=window.event; 
if(e.keyCode) { 
code=e.keyCode; 
}else if(e.which){ 
code = e.which; 
} 
var tdData = $("#tmpEditor").val(); 
if(code == 3){ 
var tipStyle = 'top:'+(parseInt($(this).offset().top)+addToTrTop)+'px;left:'+(parseInt($(this).offset().left)+addToTrLeft)+'px;'; 
$("#clickTips").attr('style',tipStyle).show(); 
return false; 
} 
if(code == 1){ 
if( !$(this).parent().hasClass('editting')) { 
preEdit&&preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
$("#tmpEditor").parent().empty().html($("#tmpEditor").val()); 
$(".editting").removeClass('editting'); 
}else if( preEdit && (preEdit.parent().children().index($(preEdit)) != $(this).parent().children().index($(this))) ){ 
preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
}else{ 
if(!$("#tmpEditor").val()) { 
preEdit = $(this); 
var tdData = $(this).html(); 
$(this).empty().append(inputData.replace('?',tdData)); 
$("#tmpEditor").focus(); 
} 
} 
return false; 
} 
bindListening(); 
}); //End 表格右键响应 
//向上增加一行 
$("#addUp").unbind().click(function(){ 
doAddTrData($(this),'up'); 
bindListening(); 
}); 
//向下增加一行 
$("#addDown").unbind().click(function(){ 
doAddTrData($(this),'down'); 
bindListening(); 
}); 
//删除当前行 
$("#delete").unbind().click(function(){ 
doDeleteTrData($(this),'delete'); 
bindListening(); 
}); 
//编辑当前行 
$("#edit").unbind().click(function(){ 
doEditTrData($(this),'edit'); 
bindListening(); 
}); 
var addTrData = $("tr:first").clone(true).attr('class','newAdd'); 
var getIndex = function(clickedTd,type){ 
var fields = $("tr"); 
var addIndex = -1; 
for(var i=1;i<fields.length;i++){ 
var tipStyle = clickedTd.parent().attr('style'); 
var topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+addToTrTop); 
var ie_topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+(addToTrTop-2)); 
if((tipStyle.indexOf(topValue) != -1) || (tipStyle.indexOf(ie_topValue) != -1)) { 
switch(type.toLowerCase()){ 
case 'up': 
addIndex = i-1; 
break; 
case 'down': 
case 'edit': 
case 'delete': 
addIndex = i; 
break; 
} 
} 
} 
return addIndex; 
} 
var doAddTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).after(addTrData); 
setTimeout('$(".newAdd").attr("class",null)',1000); 
$("#clickTips").hide(); 
return false; 
} 
var doDeleteTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).remove(); 
$("#clickTips").hide(); 
return false; 
} 
var doEditTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).addClass('editting'); 
$("#clickTips").hide(); 
return false; 
} 
} 
bindListening(); 
}); 
</script> 
<style type="text/css"> 
table{ 
width:580px; 
margin:0 auto; 
} 
td,#tmpEditor{ 
display:block; 
float:left; 
border:1px solid #000000; 
margin:auto 0.5px; 
width:60px; 
height:20px; 
} 
#clickTips{ 
border:1px solid #000000; 
position:absolute; 
left:3px; 
width:120px; 
padding:3px; 
display:none; 
background-color:#F5FFFA; 
z-index:3; 
} 
span{ 
float:left; 
width:100px; 
height:20px; 
clear:both; 
} 
.cloneTr{ 
display:none; 
} 
.newAdd td{ 
background-color:#FFFACD; 
} 
.editting td{ 
background-color:#F0F0F0; 
} 
</style> 
<div id="tableContainer"> 
<table> 
<tr class="cloneTr"> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>1</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>2</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>3</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>4</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>5</td> 
</tr> 
<tr> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td>6</td> 
</tr> 
</table> 
</div> 
<div id="clickTips"> 
<span id="addUp">向上增加一行</span> 
<span id="edit">修改当前一行</span> 
<span id="addDown">向下增加一行</span> 
<span id="delete">删除当前行</span> 
</div> 
</body> 
</html>

jqueryAutoAddDeleteTableTr_leftClick_addsearch.html
//左键添加查询功能
<html> 
<head> 
<title>jQuery 动态增删表格</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="Content-Language" content="zh-CN" /> 
<script type="text/javascript" src="http://demo.3water.com/jslib/jquery/jquery-1.6.2.min.js"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(document).ready(function(){ 
var addToTrTop = 10; 
var addToTrLeft = 534; 
var addToTdLeft = 60; //若设置addToTdLeft则addToTrLeft失效 
var preEdit = null; 
var inputData = '<input id="tmpEditor" type="text" value="?"></input>'; 
var bindListening = function(){ 
//表格点击响应 
$("td").unbind().click(function(){ 
if($(this).hasClass('search')) return false; 
var tdData = $("#tmpEditor").val(); 
if( !$(this).parent().hasClass('editting')) { 
preEdit&&preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
$("#tmpEditor").parent().empty().html($("#tmpEditor").val()); 
$(".editting").removeClass('editting'); 
}else if( preEdit && (preEdit.parent().children().index($(preEdit)) != $(this).parent().children().index($(this))) ){ 
preEdit.empty().html(tdData.trim(' ')); 
preEdit = null; 
}else{ 
if(!$("#tmpEditor").val()) { 
preEdit = $(this); 
var tdData = $(this).html(); 
$(this).empty().append(inputData.replace('?',tdData)); 
$("#tmpEditor").focus(); 
} 
} 
if(!$(this).parent().hasClass('editting')){ 
if(!addToTdLeft){ 
var offsetLeft = (parseInt($(this).parent().offset().left)+addToTrLeft); 
}else { 
var offsetLeft = (parseInt($(this).offset().left)+addToTdLeft); 
} 
var tipStyle = 'top:'+(parseInt($(this).offset().top)+addToTrTop)+'px;left:'+offsetLeft+'px;'; 
$("#clickTips").attr('style',tipStyle).show(); 
} 
bindListening(); 
}); 
//向上增加一行 
$("#addUp").unbind().click(function(){ 
doAddTrData($(this),'up'); 
bindListening(); 
}); 
//向下增加一行 
$("#addDown").unbind().click(function(){ 
doAddTrData($(this),'down'); 
bindListening(); 
}); 
//删除当前行 
$("#delete").unbind().click(function(){ 
doDeleteTrData($(this),'delete'); 
bindListening(); 
}); 
//编辑当前行 
$("#edit").unbind().click(function(){ 
doEditTrData($(this),'edit'); 
bindListening(); 
}); 
//查询操作 
$("#searchButton").click(function(){ 
$("#clickTips").hide(); 
var trs = $("#tableContainer").find("tr"); 
var tdLength = trs.eq(0).children('td').length; 
var RegExp = ''; 
for(var i=0;i<tdLength;i++){ 
RegExp += '[^,]*'+trs.eq(1).find('input').eq(i).val()+'[^,]*,'; 
} 
//不加eval则正则匹配失效 
RegExp = eval('/' + RegExp.substr(0,RegExp.length-1) + '/i'); 
var stringObject = []; 
for(var i=2;i<trs.length;i++){ 
stringObject[i] = ''; 
for(var j=0;j<tdLength;j++){ 
stringObject[i] += trs.eq(i).find('td').eq(j).html()+','; 
} 
stringObject[i] = stringObject[i].substr(0,stringObject[i].length-1).toString(); 
} 
for(var i=2;i<trs.length;i++){ 
if(stringObject[i].search(RegExp)) { 
trs.eq(i).hide(); 
}else{ 
trs.eq(i).show(); 
} 
} 
bindListening(); 
}); 
var addTrData = $("tr:first").clone(true).attr('class','newAdd'); 
var getIndex = function(clickedTd,type){ 
var fields = $("tr"); 
var addIndex = -1; 
for(var i=1;i<fields.length;i++){ 
var tipStyle = clickedTd.parent().attr('style'); 
var topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+addToTrTop); 
var ie_topValue = 'top: '+(parseInt(fields.eq(i).offset().top)+(addToTrTop-2)); 
if((tipStyle.indexOf(topValue) != -1) || (tipStyle.indexOf(ie_topValue) != -1)) { 
switch(type.toLowerCase()){ 
case 'up': 
addIndex = i-1; 
break; 
case 'down': 
case 'edit': 
case 'delete': 
addIndex = i; 
break; 
} 
} 
} 
return addIndex; 
} 
$("#clearSearchButton").click(function(){ 
$("#clickTips").hide(); 
$(".search input[type=text]").val(''); 
$("tr").show(); 
$("tr.cloneTr").hide(); 
}) 
var doAddTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).after(addTrData); 
setTimeout('$(".newAdd").attr("class",null)',1000); 
$("#clickTips").hide(); 
return false; 
} 
var doDeleteTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).remove(); 
$("#clickTips").hide(); 
return false; 
} 
var doEditTrData = function(clickedTd,type){ 
if(getIndex(clickedTd,type) == -1) return false; 
else { 
var index=getIndex(clickedTd,type); 
} 
$("table tr").eq(index).addClass('editting'); 
$("#clickTips").hide(); 
return false; 
} 
} 
bindListening(); 
}); 
</script> 
<style type="text/css"> 
table{ 
margin:0 auto; 
} 
td,#tmpEditor{ 
display:block; 
float:left; 
border:1px solid #000000; 
margin:auto 0.5px; 
width:60px; 
height:20px; 
} 
#clickTips{ 
border:1px solid #000000; 
position:absolute; 
left:3px; 
width:120px; 
padding:3px; 
display:none; 
background-color:#F5FFFA; 
z-index:3; 
} 
span{ 
float:left; 
width:100px; 
height:20px; 
clear:both; 
} 
.cloneTr{ 
display:none; 
} 
.newAdd td{ 
background-color:#FFFACD; 
} 
.editting td{ 
background-color:#F0F0F0; 
} 
.search{ 
background-color:#dddccc; 
} 
.search input{ 
padding-bottom: 0; 
padding-right: 7px; 
} 
.searchButtonTd{ 
float:left; 
} 
#searchButton,#clearSearchButton{ 
margin-left: -2px; 
margin-top: -2px; 
padding-bottom: 0; 
padding-right: 20px; 
} 
</style> 
<div id="tableContainer"> 
<table> 
<tr class="cloneTr"> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
<td> </td> 
</tr> 
<tr> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search"><input type="text" size="6"/></td> 
<td class="search searchButtonTd"><input id="searchButton" type="button" size="10" value="查询"/></td> 
<td class="search searchButtonTd"><input id="clearSearchButton" type="button" size="10" value="清除"/></td> 
</tr> 
<tr> 
<td>1</td> 
<td>2</td> 
<td>3</td> 
<td>4</td> 
<td>5</td> 
<td>6</td> 
<td>7</td> 
<td>8</td> 
</tr> 
<tr> 
<td>a</td> 
<td>b</td> 
<td>c</td> 
<td>d</td> 
<td>e</td> 
<td>f</td> 
<td>g</td> 
<td>h</td> 
</tr> 
<tr> 
<td>A</td> 
<td>B</td> 
<td>C</td> 
<td>D</td> 
<td>E</td> 
<td>F</td> 
<td>G</td> 
<td>H</td> 
</tr> 
<tr> 
<td>aa</td> 
<td>bb</td> 
<td>cc</td> 
<td>dd</td> 
<td>ee</td> 
<td>ff</td> 
<td>gg</td> 
<td>hh</td> 
</tr> 
<tr> 
<td>111</td> 
<td>222</td> 
<td>333</td> 
<td>444</td> 
<td>555</td> 
<td>666</td> 
<td>777</td> 
<td>888</td> 
</tr> 
<tr> 
<td>1a</td> 
<td>2b</td> 
<td>3c</td> 
<td>4d</td> 
<td>5e</td> 
<td>6f</td> 
<td>7g</td> 
<td>8h</td> 
</tr> 
</table> 
</div> 
<div id="clickTips"> 
<span id="addUp">向上增加一行</span> 
<span id="edit">修改当前一行</span> 
<span id="addDown">向下增加一行</span> 
<span id="delete">删除当前行</span> 
</div> 
</body> 
</html>

PS:
var addToTrTop = 10;
var addToTrLeft = 534;

var addToTdLeft = 60; //若设置addToTdLeft则addToTrLeft失效

表示提示DIV clickTips距离当前tr顶部和左部的偏移量,可自行修改,可为负数表示上移或左移。

软件下载:下载
作者:Zjmainstay


出处:http://www.cnblogs.com/Zjmainstay/

Javascript 相关文章推荐
Jquery 弹出层插件实现代码
Oct 24 Javascript
js获取php变量的实现代码
Aug 10 Javascript
jQuery中innerWidth()方法用法实例
Jan 19 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
Jan 20 Javascript
全面接触神奇的Bootstrap导航条实战篇
Aug 01 Javascript
浅谈JS函数节流防抖
Oct 18 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
Oct 31 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
js序列化和反序列化的使用讲解
Jan 19 Javascript
使用vuex解决刷新页面state数据消失的问题记录
May 08 Javascript
vue实现移动端省市区选择
Sep 27 Javascript
Element Cascader 级联选择器的使用示例
Jul 27 Javascript
jQuery.each()用法分享
Jul 31 #Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 #Javascript
JavaScript中的私有/静态属性介绍
Jul 26 #Javascript
13 个JavaScript 性能提升技巧分享
Jul 26 #Javascript
了解一点js的Eval函数
Jul 26 #Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 #Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
Jul 25 #Javascript
You might like
PHP 输出缓存详解
2009/06/20 PHP
PHP的一个基础知识 表单提交
2011/07/04 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
2017/10/23 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
JQuery 构建客户/服务分离的链接模型中Table分页代码效率初探
2010/01/22 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
Javascript面试经典套路reduce函数查重
2017/03/23 Javascript
Vue实现一个返回顶部backToTop组件
2017/07/25 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
AngularJS监听ng-repeat渲染完成的两种方法
2018/01/16 Javascript
animate.css在vue项目中的使用教程
2018/08/05 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
JavaScript中break、continue和return的用法区别实例分析
2020/03/02 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
python 链接和操作 memcache方法
2017/03/04 Python
利用Opencv中Houghline方法实现直线检测
2018/02/11 Python
Python多进程方式抓取基金网站内容的方法分析
2019/06/03 Python
线程同步的方法
2016/11/23 面试题
残疾人小组计划书
2014/04/27 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
幼儿园大班教学反思
2016/03/02 职场文书
导游词之千岛湖
2019/09/23 职场文书
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫