基于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 相关文章推荐
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
Sep 09 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
Dec 27 Javascript
jquery获取easyui日期控件的值实现方法
Nov 09 Javascript
JS高级运动实例分析
Dec 20 Javascript
webuploader模态框ueditor显示问题解决方法
Dec 27 Javascript
实例分析JS与Node.js中的事件循环
Dec 12 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
Jun 11 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
Sep 23 Javascript
vue项目中定义全局变量、函数的几种方法
Nov 08 Javascript
vue 微信扫码登录(自定义样式)
Jan 06 Javascript
Vue实现简易购物车页面
Dec 30 Vue.js
JavaScript 中的执行上下文和执行栈实例讲解
Feb 25 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 insert语法详解
2008/06/07 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
php生成随机颜色方法汇总
2014/12/03 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
php和C#的yield迭代器实现方法对比分析
2019/07/17 PHP
event.srcElement+表格应用
2006/08/29 Javascript
js对象的比较
2011/02/26 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
jQuery on()绑定动态元素出现的问题小结
2016/02/19 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
用原生js做单页应用
2017/01/17 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
详解Node.JS模块 process
2020/08/31 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
Python单链表简单实现代码
2016/04/27 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
python3安装pip3(install pip3 for python 3.x)
2018/04/03 Python
Python OS模块实例详解
2019/04/15 Python
Python字符编码转码之GBK,UTF8互转
2020/02/09 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
python 视频下载神器(you-get)的具体使用
2021/01/06 Python
TIME时代杂志台湾总代理:台时亚洲
2018/10/22 全球购物
如何让Java程序执行效率更高
2014/06/25 面试题
自动化专业职业生涯规划书范文
2014/01/16 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
社区国庆节活动总结
2015/03/23 职场文书
大学生党课感想
2015/08/11 职场文书
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL