选拔dom接口很轻巧的走访页面中有着正式组件,

2019-07-16 作者:小鱼儿主页高手论坛   |   浏览(71)

那是一款基于javascript实现图片翻书效果代码,图片能够从左右八个样子拓展切换,用户仍是可以够自定义对应图片的标题与文字说明,是一款极度实用的图样特效源码。

socket.io为啥会诞生呢?请看上边文字表明。

本文实例陈述了js完结鼠标点击文本框自动选中内容的方法。分享给我们供我们参谋。具体如下:

     对于dom的齐全大家都掌握啊,DOM是Document Object Model的缩写,其意思是文书档案对象模型。DOM是一种与浏览器、平台、语言非亲非故的接口,使用dom接口很轻易的会见页面中持有正式组件。dom操作一般能够分为四个地点即DOM Core(宗旨)、HTM-Dom和CSS-DOM。

双七乞巧节也得以是招亲的神器,放一些想起的肖像,还足以永久保存,是还是不是很有心意,推荐给我们,有供给的小同伴能够学学深造。

为何必要socket.io?

此处运用JS完毕鼠标点击时自动选中文本框文本的机能,相信广大爱人都碰到这种效果与利益的,正是当我们点击文本框的时候,文本框中暗中认可的文字会被整个入选,那样当你输入的时候不要再去挑选,省去了一部分劳动,进步了输入作用,用户料定会喜欢那意义,那么达成的主意是怎么呢?通过本代码你就搞了然了。

  每三个网页都得以用DOM表示出来,每种DOM都足以当做是一棵DOM树。上面包车型地铁html页面结构得以塑造出一棵DOM树,代码:

运营效果图:

    node.js提供了火速的服务端运营情形,可是出于浏览器端对HTML5的支持分化,为了协作全部浏览器,提供一级的实时的用户体验,而且为程序猿提供客户端与服务端一致的编制程序体验,于是socket.io诞生。

先来探视运维作效果果截图:

代码如下:

小鱼儿主页高手论坛 1

    socket.io设计的对象是扶助任何的浏览器,任何Mobile设备。前段时间扶助主流的PC浏览器(IE,Safari,Chrome,Firefox,Opera等),Mobile浏览器(iphone Safari/ipad Safari/android WebKit/WebOS WebKit等)。

小鱼儿主页高手论坛 2

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8"
 <title>DOM Demo</title> 
</head>
<body>
<p title="选择你最喜欢的水果.">你最喜欢的水果是?</p>
<ul>
<li title="苹果">苹果</li>
<li title="橘子">橘子</li>
<li title="菠萝">菠萝</li>
</ul>
</body>
</html>

世家可以先运维一下    -------------------------------------效能运维-----------------------------------------

    socket.io基于node.js并简化了WebSocket API,统一了各样通讯API。它援救:WebSocket, Flash Socket, AJAX long-polling, AJAX multipart streaming, Forever IFrame, JSONP polling。

在线演示地址如下:

   创设出的DOM树如下:

为大家大快朵颐的jQuery幻灯片带缩略图轮播代码如下

    socket.io化解了实时的通讯难点,并统一了服务端与客户端的编制程序格局。运转了socket现在,如同建构了一条客户端与服务端的管道,两侧能够集思广益。

  小鱼儿主页高手论坛 3

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>JS实现图片翻书效果</title>
<META http-equiv=imagetoolbar content=no>
<STYLE type=text/css>
#center {
 LEFT: 50%; POSITION: absolute; TOP: 50%
}
#DHTMLBOOK {
 BACKGROUND: #000; LEFT: -210px; VISIBILITY: hidden; WIDTH: 420px; POSITION: relative; TOP: -160px; HEIGHT: 320px
}
#TXTBOX {
 FONT-SIZE: 0.8em; WIDTH: 410px; COLOR: #aba193; FONT-FAMILY: verdana; POSITION: absolute; TOP: 320px; TEXT-ALIGN: center
}
.page {
 OVERFLOW: hidden; BORDER-LEFT: #000000 1px solid; WIDTH: 50%; CURSOR: pointer; POSITION: absolute; HEIGHT: 100%
}
.right {
 BORDER-RIGHT: #000000 1px solid; LEFT: 50%
}
.turn {
 BACKGROUND: #000000
}
.img {
 WIDTH: 200%; POSITION: absolute; HEIGHT: 100%
}
</STYLE>

<SCRIPT type=text/javascript><!--

document.onselectstart = function () { return false; }

var nI = 0;
var kI = 0;
var run = false;

function setOpacity(obj,o) {
 if (o<0) o=0; else if (o>100) o = 100;
 if (obj.filters)obj.filters.alpha.opacity=o; else obj.style.opacity = o/100;
}
function TPR__(p) {
 P1.style.left = 50-(2.5*p) "%";
 P1.style.width = (2.5*p) "%";
 setOpacity(P1i, .5*p*p);
 if (p == 20) run = false;
}
function TPR_(p) {
 P2.style.width = 50-(2.5*p) "%";
 setOpacity(P2i, 100-.5*(p*p));
 if (p == 20) {
 P2i.src = IMGSRC[kI].src;
 setOpacity(P2i, 100);
 P2.style.width = "50%";
 for(var i=1; i<=20; i  ) setTimeout("TPR__(" i ")", i*32);
 }
}
function TPR() {
 if (!run) {
 run = true;
 P01i.src = IMGSRC[kI].src;
 P1.style.width = 0;
 kI  ;
 if (kI>=nI) kI = 0;
 titLe(kI);
 P02i.src = IMGSRC[kI].src;
 P1i.src = IMGSRC[kI].src;
 for (var i=1; i<=20; i  ) setTimeout("TPR_(" i ")", i*32);
 } else setTimeout("TPR()", 100);
}

function TPL__(p) {
 P2.style.width = (2.5*p) "%";
 setOpacity(P2i, .5*p*p);
 if (p == 20) run = false;
}
function TPL_(p) {
 P1.style.left = (2.5*p) "%";
 P1.style.width = 40 (10-2.5*p) "%";
 setOpacity(P1i, 100-.5*(p*p));
 if (p == 20) {
 P1i.src = IMGSRC[kI].src;
 setOpacity(P1i, 100);
 P1.style.left = 0;
 P1.style.width = "50%";
 for(var i=1; i<=20; i  ) setTimeout("TPL__(" i ")", i*32);
 }
}
function TPL() {
 if (!run) {
 run = true;
 P02i.src = IMGSRC[kI].src;
 P2.style.width = 0;
 kI--;
 if (kI < 0) kI = nI-1;
 titLe(kI);
 P01i.src = IMGSRC[kI].src;
 P2i.src = IMGSRC[kI].src;
 for(var i=1; i<=20; i  ) setTimeout("TPL_(" i ")", i*32);
 } else setTimeout("TPL()", 100);
}
function titLe(p) {
 document.getElementById("TXTBOX").innerHTML = IMGSRC[p].alt;
}
onload = function() {
 IMGSRC = document.getElementById("imgsrc").getElementsByTagName("img");
 DB = document.getElementById("DHTMLBOOK");
 P01 = DB.getElementsByTagName("span")[0];
 P01i = P01.getElementsByTagName("img")[0];
 P02 = DB.getElementsByTagName("span")[1];
 P02i = P02.getElementsByTagName("img")[0];
 P1 = DB.getElementsByTagName("span")[2];
 P1i = P1.getElementsByTagName("img")[0];
 P2 = DB.getElementsByTagName("span")[3];
 P2i = P2.getElementsByTagName("img")[0];
 nI = IMGSRC.length;
 P1i.src = IMGSRC[kI].src;
 P2i.src = IMGSRC[kI].src;
 titLe(kI);
 DB.style.visibility = "visible";
}
//-->
</SCRIPT>

<META content="MSHTML 6.00.6000.16809" name=GENERATOR></HEAD>
<BODY>

<DIV id=center>
<DIV id=DHTMLBOOK><SPAN class=page onMouseDown="return false;" ondblclick=TPL(); onclick=TPL();><IMG class=img></SPAN>
<SPAN class="page right" onMouseDown="return false;" ondblclick=TPR(); onclick=TPR();><IMG class=img style="LEFT: -100%"></SPAN>
<SPAN class="page turn" onMouseDown="return false;" ondblclick=TPL(); onclick=TPL();><IMG class=img style="FILTER: alpha(); opacity: 1"></SPAN>
<SPAN class="page turn right" onMouseDown="return false;" ondblclick=TPR(); onclick=TPR();><IMG class=img style="FILTER: alpha(); LEFT: -100%; opacity: 1"></SPAN> 
<DIV id=TXTBOX></DIV></DIV></DIV>
<DIV id=imgsrc style="VISIBILITY: hidden">
<IMG alt="JS实现图片翻书效果" src="img/1.jpg">
<IMG alt="JS实现图片翻书效果" src="img/2.jpg">
<IMG alt="JS实现图片翻书效果" src="img/3.jpg"></DIV>

</BODY></HTML>

安装

实际代码如下:

  JQuery中的DOM操作重要对满含:建【新建】、增【增添】、删【删除】、改【修改】、查【查找】【像数据库操作】。上边包车型地铁DOM操作将围绕地点的DOM树实行学习JQueryDOM操作。

上述便是为大家大饱眼福的javascript图片翻书效果,希望大家能够欣赏。

    在指令行中实行:npm install socket.io 就能够安装。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>自动选择文本框/编辑框中的文字</title>
<script type="text/javascript">
function Myselect_txt(){
 if (document.form1.title.focus){
 document.form1.title.select();}
}
function Myselect_txtarea(){
 if (document.form1.content.focus){
 document.form1.content.select();}
}
</script>
</head>
<body style="font-size:12px">
<table width="443" height="97" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#f9f9f9">
 <form name="form1">
 <tr bgcolor="#214994">
  <td height="25" colspan="2"><div align="center"><font color="#FFFFFF">新闻信息修改</font></div></td>
 </tr>
 <tr>
  <td width="80" height="28"><div align="right"><font color="#214994">新闻标题:</font></div></td>
  <td width="363"><input name="title" type="text" size="50" value="今日新闻头条" onClick="Myselect_txt()"></td>
 </tr>
 <tr>
  <td height="20"><div align="right"><font color="#214994">新闻内容:</font></div></td>
  <td rowspan="2"><textarea name="content" cols="50" rows="6" onClick="Myselect_txtarea()">今日,据相关方面报道,...</textarea></td>
 </tr>
 <tr>
  <td height="10"> </td>
 </tr>
 <tr>
  <td height="32" colspan="2">
  <div align="center">
   <input name="add" type="submit" id="add" value="添加">
 
   <input name="Submit" type="reset" value="重置">
  </div></td>
 </tr>
 </form>
</table>
</body>
</html>

  一、查--查找DOM节点

你只怕感兴趣的作品:

  • 基于Turn.js 达成翻书效果实例解析
  • 小鱼儿主页高手论坛,一举手一投足端H5开辟Turn.js达成很棒的翻书效果
  • 基于javascript html5落到实处3D翻书特效
  • JS达成图片翻书效果示例代码
  • 简单的说完结js页面切换功效
  • 基于JS完结翻书效果的页面切换样式

服务端编制程序模型

盼望本文所述对我们的javascript程序设计具备帮忙。

    查找节点特别轻便,使用选取器就会轻巧做到种种寻觅专门的工作。例:查找成分节点p再次回到p内的文件内容$("p").text();例:查找成分节点p的习性重临属性名称对应的性情值$("p").attr("title"),再次回到p的质量title的值。

    服务端编制程序依然与日平常衣裳务器同样,运维服务器,提供劳务,处监护人件。

你只怕感兴趣的篇章:

  • 当鼠标滑过文本框自动选中输入框内容的JS代码共享
  • js完成GridView单选功力自动安装交替行、选中央银行、鼠标移动行背景象
  • 用javascript css落成GridView行背景象交替、鼠标划过行变色,点击行变色选中
  • JS获取鼠标选中的文字

  二、建--新建DOM节点

譬喻下边包车型地铁server.js:

    1、创设成分节点

var http = require('http')
  , url = require('url')
  , fs = require('fs')
  , server;
server = http.createServer(function(req, res){
  // your normal server code
  var path = url.parse(req.url).pathname;
  switch (path){
  case '/':
   res.writeHead(200, {'Content-Type': 'text/html'});
   res.write('<h1>Hello! Try the <a href="/index.html">Socket.io Test</a></h1>');
   res.end();
   break;
  case '/index.html':
   fs.readFile(__dirname   path, function(err, data){
    if (err) return send404(res);
    res.writeHead(200, {'Content-Type': path == 'json.js' ? 'text/javascript' : 'text/html'})
    res.write(data, 'utf8');
    res.end();
   });
   break;
  default: send404(res);
  }
}),
send404 = function(res){
  res.writeHead(404);
  res.write('404');
  res.end();
};
server.listen(8080);
var io = require('socket.io').listen(server);
io.sockets.on('connection', function(socket){
 console.log("Connection "   socket.id   " accepted.");
 socket.on('message', function(message){
    console.log("Received message: "   message   " - from client "   socket.id);
 });
 socket.on('disconnect', function(){
  console.log("Connection "   socket.id   " terminated.");
 });
});

      创制作而成分节点并且把节点作为<ul>元素的子节点增添到DOM节点树上。先成立成分点,创制作而成分节点使用Jquery的工厂函数$()来成功,格式如下:$(html),该方法会依照传入的html字符串再次来到八个DOM对象,并将DOM对象包装成二个JQuery对象后回到。

客户端编制程序模型 

          成立四个因秋季点JQuery代码如下:

    客户端编制程序也是相似的管理格局,连接服务器,交互音信。

 $li1=$("<li></li>")

比如上面包车型大巴index.html页面:

      代码重临$li1正是三个由DOM对象包装成的JQuery对象。把新建节点增多到DOM树中JQuery代码如下:

<!doctype html>
<html>
 <head>
  <title>Socket.io Test</title>
  <script src="/json.js"></script> <!-- for ie -->
  <script src="/socket.io/socket.io.js"></script>
 </head>
 <body>  
  <script>    
  var socket;
  var firstconnect = true;
  function connect() {
   if(firstconnect) {
    socket = io.connect(null);
    socket.on('message', function(data){ message(data); });
    socket.on('connect', function(){ status_update("Connected to Server"); });
    socket.on('disconnect', function(){ status_update("Disconnected from Server"); });
    socket.on('reconnect', function(){ status_update("Reconnected to Server"); });
    socket.on('reconnecting', function( nextRetry ){ status_update("Reconnecting in " 
       nextRetry   " seconds"); });
    socket.on('reconnect_failed', function(){ message("Reconnect Failed"); });
    firstconnect = false;
   }
   else {
    socket.socket.reconnect();
   }
  }
  function disconnect() {
   socket.disconnect();
  }
  function message(data) {
   document.getElementById('message').innerHTML = "Server says: "   data;
  }
  function status_update(txt){
   document.getElementById('status').innerHTML = txt;
  }
  function esc(msg){
   return msg.replace(/</g, '<').replace(/>/g, '>');
  }
  function send() {
   socket.send("Hello Server!");  
  };    
  </script>
  <h1>Socket.io Test</h1>
  <div><p id="status">Waiting for input</p></div>
  <div><p id="message"></p></div> 
  <button id="connect" onClick='connect()'/>Connect</button>
  <button id="disconnect" onClick='disconnect()'>Disconnect</button>
  <button id="send" onClick='send()'/>Send Message</button>
 </body>
</html>
$("ul").append($li1); 

注意事项

      增加后页面中不得不看看<li>成分私下认可的"·",由于尚未为节点添Gavin本所以只展示默许符号,上边成立文本节点。

1. 初始服务器照旧提交node,张开命令行窗口,定位到server.js所在文件夹,输入node server.js运转服务器。

      PS:append()方法是增添DOM节点方法详见增--增加DOM节点。

    在上头的index.html中,注意那行:<script src="/socket.io/socket.io.js"></script>。假使不想利用本地的socket.io脚本,可

    2、成立文本节点

以直接动用上边那一个公开的台本:

      使用JQuery的工厂函数$()一样能够创立文本节点,创立文本节点的JQuery代码如下:

<script src="http://cdn.socket.io/stable/socket.io.js"></script>
$li2=$("<li>苹果</li>");

    其余须要稳重那行:socket = io.connect(null)。

      代码再次回到$li2正是三个由DOM对象包装成JQuery对象,把新建的文书节点增加到DOM树中JQuery代码如下:      

那边的null代表连接本地服务,能够换来"localhost",效果也是同等的。

$("ul").append($li2);
  1. 能够采取socket.io直接开发银行http服务。

      增添后页面中能看到"·苹果",右键查看页面源码开掘新加的公文节点没有title属性。上面方法创制带属性的节点。

例如:

    3、创制属性节点

var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
 io.sockets.emit('this', { will: 'be received by everyone'});
});

      成立属性节点同成分节点、文本节点同样使用JQuery的厂子函数实现。创立属性节点的JQuery代码如下:     

3. socket.io能够一向通过send方法发送音信,使用message事件接收新闻,举个例子:

$li3=$("<li title='榴莲'>榴莲</li>");  
//server.js
var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
 socket.on('message', function () { });
});
//index.html
<script>
 var socket = io.connect('http://localhost/');
 socket.on('connect', function () {
  socket.send('hi');
  socket.on('message', function (msg) {
   // my msg
  });
 });
</script>

    

  1. 出殡和拍卖数量

       代码重临$li3也是七个由DOM对象包装成JQuery对象,把新建的天性节点加多到DOM树中JQuery代码如下:      

    两端能够互发事件,互发数据,相互通讯。发送事件的代码为:socket.emit(action, data, function),在那之中action为事件的名称,data为数量,function为回调函数;处理事件代码为:socket.on(action,function),假设emit发送的时候有数量data,则function中参数包涵了这几个数目。socket.io除了发送和拍卖内置事件,如connect, disconnect, message。还允许发送和拍卖自定义事件,举例:

$("ul").append($li3);

//服务端:

      增添后页面中能看到"·金枕头",右键查看页面源码发掘新加的质量节点有title='谷夜套'属性。

io.sockets.on('connection', function (socket) {
 socket.emit('news', { hello: 'world' });
 socket.on('my other event', function (data) {
  console.log(data);
 });
});

   三、增--添加DOM节点

//客户端:

      动态新建元素不增添到文书档案中尚无实际意义,将新建的节点插入到文书档案中有八个主意,如下:append()、appendTo()、prepend()、prependTo()、after()、insertAfter()、before()、insertBefore()。

<script src="/socket.io/socket.io.js"></script>
<script>
 var socket = io.connect('http://localhost');
 socket.on('news', function (data) {
  console.log(data);
  socket.emit('my other event', { my: 'data' });
 });
</script>

    1、append()方法

5. 从地点能够看出来,发送数据的时候,send和emit是都能够动用的。只不过emit更是加剧了自定义事件的拍卖。

      append()方法向相称的要素内部追加内容, 方法如下:

  1. 能够在服务端使用socket的get/set方法囤积客服端的有关数据,譬喻:
$("target").append(element);

//服务端

例:     

var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
 socket.on('set nickname', function (name) {
  socket.set('nickname', name, function () { socket.emit('ready'); });
 });
 socket.on('msg', function () {
  socket.get('nickname', function (err, name) {
   console.log('Chat message by ', name);
  });
 });
});
$("ul").append("<li title='香蕉'>香蕉</li>");

//客户端

      该方法查找ul元素,然后向ul中增添新建的li成分。

<script>
 var socket = io.connect('http://localhost');
 socket.on('connect', function () {
  socket.emit('set nickname', confirm('What is your nickname?'));
  socket.on('ready', function () {
   console.log('Connected !');
   socket.emit('msg', confirm('What is your message?'));
  });
 });
</script>

    2、appendTo()方法

  1. 能够播放消息,比方聊天室中给除了当前socket连接外的享有人发音讯。

      appendTo()方法将享有相配的因素追加到钦赐的要素中,该办法是append()方法的颠倒[操作宗旨的颠倒实际不是操作结果]操作。方法如下:$(element).appendTo(target);例:     

var io = require('socket.io').listen(80);
io.sockets.on('connection', function (socket) {
 socket.broadcast.emit('user connected');
});
$("<li title='荔枝'>荔枝<li>").appendTo("ul");

8. 足以在同样次链接中,创立多少个相互独立的坦途,并不是确立数次链接。这几个官方叫法是“八个namespace”,举个例子官方的例证:

      该措施新建成分li,然后把li增添到查找到的ul成分中。

var io = require('socket.io').listen(80);
//Server
var chat = io
 .of('/chat')
 .on('connection', function (socket) {
  socket.emit('a message', {
    that: 'only'
   , '/chat': 'will get'
  });
  chat.emit('a message', {
    everyone: 'in'
   , '/chat': 'will get'
  });
 });
var news = io
 .of('/news')
 .on('connection', function (socket) {
  socket.emit('item', { news: 'item' });
 });
//Client
<script>
 var chat = io.connect('http://localhost/chat')
  , news = io.connect('http://localhost/news');
 chat.on('connect', function () {
  chat.emit('hi!');
 });
 news.on('news', function () {
  news.emit('woot');
 });
</script>

    3、prepend()方法

 socket.io的配置 

      prepend()方法将每相称的要素内部前置要丰富的因素,方法如下:

    socket.io的配置很简短,如若布署过express的话,你会意识它们差比非常少是利用大概的不二等秘书诀。先看个小例子:

$(target).prepend(element);
var io = require('socket.io').listen(80);
io.configure('production', function(){
 io.enable('browser client etag');
 io.set('log level', 1);
 io.set('transports', [
  'websocket'
 , 'flashsocket'
 , 'htmlfile'
 , 'xhr-polling'
 , 'jsonp-polling'
 ]);
});
io.configure('development', function(){
 io.set('transports', ['websocket']);
});

例:     

能够看出,socket.io使用configure, set, enable, disable举行配置。

$("ul").prepend("<li title='芒果'>芒果</li>")

1. 行使configure方法配置不一致的周转条件下的表现;正是说在分歧的碰着下,启用不一样的陈设选项。configure的首先个参数是运作条件,第2个参数是开始展览安排的function。运转条件标准的如production可能是development,当然这里能够使大肆的字符串。要是configure的率先个参数省略的话,表达后边的安顿是公用的,不管是何等条件下,都有效。

      该方式将搜索成分ul然后将新建的li成分作为ul子节点,且作为ul的率先身长节点插入到ul中。

2. 布署好种种运行条件了,那么哪些设置当前运作在老大境况下呢?那一个是经过在指令行中期维修改景况变量NODE_ENV的值完结的。

    4、prependTo()方法

  1. 在configure的布局函数中,大家能够动用set, enable, disable设置相关选项。

      prependTo()方法将元素增添到每三个格外的要素内部前置,方法如下:

4. 具体能够配备的项参照他事他说加以考察:
实用参照他事他说加以考察

$(element).prependTo();

socket.io介绍:

例:     

socket.io安装和采取表明:

$("<li title='西瓜'>西瓜</li>").prependTo("ul");

socket.io Wiki:

      该方法将新建的要素li插入到查找到的ul成分中作为ul的首先身长节成分。

你只怕感兴趣的稿子:

  • Python通过websocket与js客户端通讯示例深入分析
  • .NET落实WebSocket服务端即时通讯实例
  • WebSocket node.js创制即时通讯的Web聊天服务器
  • Spring Boot 开荒私有即时通讯系统(WebSocket)
  • C# websocket及时通讯协议的兑现格局言传身教
  • 依据Node.js的WebSocket通信实现
  • 行使 Spring Boot 达成WebSocket实时通讯
  • nodejs结合socket.io达成websocket通讯功用的艺术
  • android利用websocket协议与服务器通讯
  • WebSocket的通讯进度与贯彻方式详解

    5、after()方法

      after()方法向相配的要素前边添欧成分,新增添长的因素做为目的成分后的邻座的弟兄成分。方法如下:

$(target).after(element);

例:

      $("p").after("<span>新加段新加段新加段新加段新加段</span>");

本文由小鱼儿玄机30码发布于小鱼儿主页高手论坛,转载请注明出处:选拔dom接口很轻巧的走访页面中有着正式组件,

关键词: 小鱼儿玄机30码