Python 16 html 基础 jQuery & Javascript研究

基础内容

  DOM操作

  javascript探讨

  JQuery初识

DOM

innerText  ==>获取仅文本

innerHtml  ==>获取全部内容

1 <div id="aaa">dandy<span>aaa</span>taylor</div>

value

  input value 获取当前标签的值

  select 获取选中的value值 selectIndex

  textarea 获取标签的值

  

  tooltip:   

    placeholder ="请输入关键字"   ==> html5里面可以直接看到input标签的提示字符。

    onfocus; onblur  光标锁定,光标消失事件。

属性操作

  setAttribute

  getAttribute

  removeAttribute

 

创建标签:

   1 var tag = "<input type='button' />" 2 document.getElementById("aaa").insertAdjacentHTML("beforeEND",tag); 

 1 var tag = document.createElement('input') 2 tag.setAttribute('type','text') 3 document.getElementById('aaa').appendChild(tag) 

 

其他功能

   1 var conf = confirm("确定删除么?") 2 console.log(conf) 

    如果点击确认,则返回true;如果点击取消,则返回false.

  

location.href  获取当前url
location.href = "" 重新定向
location.reload()  刷新
1 var obj = setInterval(function(){
2     console.log(1);
3 },1000)
4 clearInterval(obj)清空定时器
5 
6 setTimeout("func()",5000)  邮箱删除提醒,删除邮件

Javascript

javascript的函数:    

1、普通函数
function func(){
    ...
    }
2、匿名函数
setInterval(function(){
    ...
},1000)
3、自执行函数
(function(arg){
   console.log(arg); 
})

序列化

  JSON.stringify(li)  ==> 数组转换成字符串

  JSON.parse()  ==> 字符串转换成对象

转义

  encodeURL(url)

  decodeURL(url)

  客户端(cookie)  ==> 服务器端

  将数据经过转义后保存在cookie

eval

  python:

    val = eval(表达式)   可以执行表达式,返回结果,但是例如for循环之类的就不能执行了。

    exec(代码)  可以执行类似for循环之类的代码,没有返回

     python里面eval后面写一个表达式,实际上是做不了的

  javascript:

    eval 是python的eval跟exec的合集

时间

  date对象

  创建时间对象

  var d = new Date()

  d.get   获取

  d.set   设置

作用域:

  python中是以函数作为作用域的:

1 def func():
2     if 1==1:
3         name="dandy"
4    print(name)

  其他语言以{}或代码块作为作用域

public void func()
{
  if(1==1){
  string name = "dandy"  
}  
  console.write(name)  
}
//# 会报错的。因为声明的变量name是一个局部变量

**********************javascript中以函数作为作用域(除了let)

**********************函数的作用域在函数未被调用前,就已经被创建

**********************函数的作用域存在作用域链并且也是在被调用前创建

1         obj = 'text'
2         function func(){
3             var obj = 'dandy';
4             function inner(){
5                 var obj = 'renee';
6                 console.log(obj)
7             }
8             inner()  ==>所以这边调用先会在函数本身查找 obj, 没有的话去上层"dandy",没有的话再上层"text",再没有就报错。
9         }
 1      所以下面这段代码
 2         obj = 'text'
 3         function func(){
 4             var obj = 'dandy';
 5             function inner(){
 6                 console.log(obj)
 7             }
 8             return inner;
 9          }
10          var ret = func()
11          ret() 的输出是dandy
12 ====================函数的作用域在函数未被调用前,就已经被创建
 1      所以下面这段代码
 2         obj = 'text'
 3         function func(){
 4             var obj = 'dandy';
 5             function inner(){
 6                 console.log(obj)
 7             }
 8             var obj = 'renee';
 9             return inner;
10          }
11          var ret = func()
12          ret() 的输出是renee
13     解释器解释的时候,内部代码不执行,只创建作用域,所以解释器从上到下解释(先作用域)。首先 var obj,然后func,inner,然后执行ret=func(),
此时obj="text",执行func时,obj='dandy',obj = 'renee',最后执行inner,此时obj="renee"

*******************************javascript函数内部局部变量会提前申明

function func(){
   console.log(xxoo);
   var xxoo = "dandy"
}
func()
输出什么?
undefined

函数在生成作用域链的同时,会将所有的局部变量定义一下(不赋值)

词法分析:

 

切记词法分析:1、形式参数;2、局部变量;3、函数声明表达式;执行函数

javascript 面向对象

 1     function Foo(){
 2         var name ="dandy";
 3     }
 4     foo()
 5 相当于
 6     function Foo(){
 7         this.name ="dandy";
 8     }
 9     var obj = new Foo()
10     obj.name ==> "dandy"

那么再看下面这个案例代码

1 function Foo(n){
2         this.name = n;
3     }
4     var obj = new Foo("dandy")

这里的this就相当于python中的self。创建对象用new 函数();

 1 function Foo(n){
 2         this.name = 'n'
 3         this.sayname = function(){
 4             console.log(this.name);
 5         }
 6     }
 7     var obj1 = new Foo("renee");
 8     obj1.name;
 9     obj1.sayname()
10 
11     var obj2 = new Foo("renee");
12     obj2.name;
13     obj2.sayname()
14     javascript 会在内存中创建2个对象,重复;而且对象在内存中也是2个sayname();重复定义
 1  原型
 2     function Foo(n){
 3         this.name = n;
 4     }
 5     # Foo 原型
 6     Foo.prototype = {
 7         'sayname':function(){
 8             console.log(this.name)
 9         }
10     }
11     obj1 = new Foo('dandy')
12 
13     obj2 = new Foo('renee')
14     类里面没有重复定义原型,对象去类的原型去查找,这样避免了重复定义类

下面我们来讲一下DOM里面的this,大家先记住一句话,谁调用事件或者函数,this就指向谁

绑定事件的两种方式:

  this  当前出发事件标签

    a、第一种绑定方式

    <input type='button' onclick = 'clickon(this)'>

    b、第二种绑定方式

    document.getElementById("id").onclick=function(){

      this ==>被调用的标签对象

  }

    c、第三种绑定方式(click 绑定2个方法同时)

    var mydiv = document.getElementById("id")

    mydiv.addEventlistener("click",function(){console.log('aa')},false)

    mydiv.addEventlistener("click",function(){console.log('bb')},false) 

  特别注意一下下面这张图

<body>
    <div id="main">
        <div id="content"></div>
    </div>
<script>
    var mymain = document.getElementById("main");
    var mycontent = document.getElementById("content");
//    mymain.addEventListener('click',function() {console.log("main")},false);
//    mycontent.addEventListener('click',function() {console.log("content")},false);

    mymain.addEventListener('click',function() {console.log("main")},true);
    mycontent.addEventListener('click',function() {console.log("content")},true);

//    false ==> 是一种冒泡方式
//    true ==> 则是表示一种捕捉方式

</script>
</body>
 1 this作用域
 2 <body>
 3     <table border="1" width="400px">
 4         <tr><td>1</td><td>1</td><td>1</td><td>1</td></tr>
 5         <tr><td>1</td><td>1</td><td>1</td><td>1</td></tr>
 6         <tr><td>1</td><td>1</td><td>1</td><td>1</td></tr>
 7         <tr><td>1</td><td>1</td><td>1</td><td>1</td></tr>
 8     </table>
 9     <script>
10         var objs = document.getElementsByTagName("tr");
11         for (var i = 0; i < objs.length; i++){
12             objs[i].onmouseover= function() {
13                 this.style.backgroundColor = "red";
14                 //objs[i].style.backgroundColor = "red"; 因为作用域的问题,所以不可以这样写 for循环先执行解析,i=0、1、2
15                 //但是function还只是放在内存中没有执行
16             };
17             objs[i].onmouseout = function() {
18                 this.style.backgroundColor = "";
19             }
20         }
21     </script>
22 </body>
View Code

对于position做页面的补充,跟overflow的联合使用,首先让我们假想这样一种场景,我们需要一个页面,有一个header一直存在在顶端,左边的菜单栏也是一直存在在页面,右边的正文内容则很长,也需要一个下拉框,不改变菜单跟header的情况下,自己滚动:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .pg-header{
 8             background-color: #073763;
 9             height: 50px;
10             width: 100%;
11             color: white;
12         }
13         .content{
14             position: fixed;
15             top: 50px;
16             bottom: 0;
17             left: 0;
18             width: 200px;
19             background-color: seagreen;
20         }
21         .main{
22             position: fixed;
23             top: 50px;
24             right:0;
25             bottom:0;
26             left: 200px;
27             background-color: brown;
28             overflow: auto;
29         }
30     </style>
31 </head>
32 <body style="margin: 0;">
33     <div class="pg-header">
34         Flex
35     </div>
36     <div class="content">菜单</div>
37     <div class="main">
38         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
39         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
40         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
41         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
42         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
43         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
44         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
45         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
46         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
47         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
48         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
49         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
50         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
51         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
52         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
53         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
54         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
55 
56     </div>
57 </body>
58 </html>
View Code

此时,我们希望右边的可以不考虑菜单跟header的位置保持一直在前段,这时候我们可以看一下下面这段代码:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .pg-header{
 8             background-color: #073763;
 9             height: 50px;
10             width: 100%;
11             color: white;
12         }
13         .content{
14             position: absolute;
15             top: 50px;
16             bottom: 0;
17             left: 0;
18             width: 200px;
19             background-color: seagreen;
20         }
21         .main{
22             position: absolute;
23             top: 50px;
24             right:0;
25             bottom:0;
26             left: 200px;
27             background-color: brown;
28             /*overflow: auto;*/
29         }
30     </style>
31 </head>
32 <body style="margin: 0;">
33     <div class="pg-header">
34         Flex
35     </div>
36     <div class="content">菜单</div>
37     <div class="main">
38         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
39         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
40         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
41         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
42         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
43         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
44         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
45         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
46         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
47         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
48         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
49         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
50         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
51         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
52         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
53         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
54         <p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p><p>asdfas</p>
55 
56     </div>
57 
58 </body>
59 </html>
View Code

此时,请各位将上面的楼主注释掉的一行overflow恢复出来看看,品味一下。。

min-width   屏幕缩小,出现滚动条的最小宽度

border-radius: 50%标签变成圆形

Tooltips: 

font-owesome
sublime text3

JQuery 

本来写到这边楼主很激动,冷静下来一看,好像jquery才是真的没什么可以将的东西;基本上jquery就是对于DOM的一些封装方法,就像前面我们写了一些DOM的案例一样封装起来就好。就像document.getElementById(“id”) 等于$("#id")一样,其实这就是对于前面那个方法的一个加强版的封装。简洁方便。

现在比较稳定的jquery版本应该是1.12,楼主随便百度了一个,就随意装了一个3.X的版本,其实作用差不多,1.12对于就版本的兼容性更好,而3.X则是对于html5更友好,都差不多。所以,简而言之,言而简之,jquery就相当于python里面的一个模块一样。至于怎么学习,想了下差不多就是案例吧。

首先,我们先设想下,如果有个input type为text,怎么让它开始有提示字,光标进入就消失;理性分析一波,应该是默认产生提示字,光标进去onfocus写事件清除文本框内容。失去的时候在判断有没有内容。

好,来写一下!

 1 <body> 2 <input type="text" placeholder="请输入手机号" /> 3 </body> 

效果:

你可能会惊叹一声,然后问我,jquery呢?  em.....别那么认真,现在开始。

先给大家一个网址:http://jquery.cuishifeng.cn/  这是关于jquery的各种方法的调用说明。

  

选择器   

  直接找到某个或者某一类标签

  1、id $("#id")

  2、class  $(".c1")

  3、标签   $("a")

  4、$("a,.c1, #i1") 组合抓取标签;

  5、$("div a") 层级筛选器  $("#id>a") 只找children

筛选器

  :first ==> $("a:first") 取第一个a

  :last

  :eq(1)  ==> $("a:eq(2)") 去index为2的

  :header  ==>  匹配所有p1之类的头部标签 

  

  $('[dandy]')    获取具有dandy属性的标签

  $('[dandy=‘123’]')    获取具有dandy属性,值为123的标签

  $("input[type='text']")  获取所有input文本框标签,也可以写成$(":text")

  $(":disabled")   获取所有不可编辑的标签

文本操作

  $(..).text()   # 获取文本内容

  $(..).text(‘a’)   # 文本赋值  包含html  不解析,直接当字符串处理

  $(...).html()    # 获取内容

  $(...).html('<p>aaa</p>')   # 赋值并解析html标签

  $(..).val()  获取值 ==> val('aa')  赋值

样式操作

  $('#i1').addClass('hide')

  $('#i1').removeClass('hide')

  $('#i1').toggleClass('hide') # 有hide就删除,没有就显示

案例

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .hide{
 8             display: none;
 9         }
10     </style>
11 </head>
12 <body>
13     <input id="b1" type="button" value="关灯"  />
14     <div id="i1" class="hide">  aaa</div>
15 
16 </body>
17 <script src="jqueryfile/jquery-3.2.1.js"></script>
18 <script>
19     $('#b1').click(function() {
20         $('#i1').toggleClass('hide')
21     });
22 
23 </script>
24 </html>
View Code

属性操作

  专门用于定义自定义属性

    $(..).attr('type')   # 属性查看

    $(..).attr('name','dandy')  #创建属性,设置属性值

    $(..).removeAttr('type')  # 删除属性

  专门用于checkbox, radio

    $(..).prop('checked')  # 获取值

    $(..).prop('checked', true)  #   赋值

  

  index获取索引位置

  $(..).index()

  $(..).append(temp)  # 追加在最后

  $(..).prepend(temp)  #追加在最前面

  $(..).after(temp)  #  追加在对象后面

  $(..).before(temp)  #  在对象前面

  $('#id').prependTo()   # 整体对象移到目标标签

文档处理

  $(..).eq(1).empty()  # 清空标签内容

  $(..).eq(1).remove()  # 清空标签内容,删除标签

  $(..).eq(1).clone()  #  克隆一份标签

增加

  DOM  ==> var td = document.createElement('td')

       td.innerHTML="用户输入的值"

css处理

  $('#t1').css('样式名','样式值')

位置

  scrollTop(val)、scrollLeft(val)   向上、向左移动

  $(window).scrollTop()  # 获取  $(window).scrollTop(0) # 返回顶部

  

  offset 指定坐标在html中的坐标

  offset().top()

  

  position relative

    offset   指定标签相对于父标签的位置坐标(一直找到上一个relative标签为止,不一定上父标签)

jQuery绑定事件

  a、$('.c1').click(function(){})

  b、$('.c2').bind('click',function(){})

      $('.c2').unbind('click',function(){})

  委托

  c、$('.c1').delegete('a','click',function(){})  c1内部所有a标签绑定事件

  c、$('.c1').undelegete('a','click',function(){}) c1内部所有a标签解绑事件

  $('.c1').on('click',function(){})

  $(".c1").off('click',function(){})

这里的委托事件跟其他绑定事件有一点不同,比如我们之前写过一个添加的表格,delegete的委托绑定会给后面新添加的tr也绑定事件。

阻止事件发生

  return false;

 1 <body>
 2     <a id="a1" href="http://www.baidu.com">点我</a>
 3 </body>
 4 <script src="jquery-1.4.1.min.js">
 5 </script>
 6 <script>
 7     $('#a1').click(function(){
 8         return false;
 9     })
10 </script>

1、页面框架加载完成后自动执行:

  $(function(){

  $(...)

})

2、当前页面所有元素全部加载完毕后执行

  $('#id').click(function(){

  ....

})  

  

jQuery的扩展

一、

  $.extend({

  'renee':function(){

    return 'beauty'

}

})

调用   $.renee();

*******************************************************************************

*******************************************************************************

 *******************************************************************************

先调用jquery,后调用自定制插件,最后调用函数传入参数

二、

  $.fn.extend({

    'dandy', function(){

      return 'em'

}

});

调用   $('.i1').dandy()

避免扩展包全局变量冲突

(function(){

  var ...

})(jQuery).

具体实例一、简易菜单栏

一句话搞定:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .header{
 8             width: 200px;
 9             background-color: #073763;
10         }
11         .hide{
12             display: none;
13         }
14     </style>
15 </head>
16 <body>
17     <div style="height: 400px; 200px;">
18         <div class="item">
19             <div class="header">标题一</div>
20             <div class="content hide">内容</div>
21         </div>
22         <div class="item">
23             <div class="header">标题二</div>
24             <div class="content hide">内容</div>
25         </div>
26         <div class="item">
27             <div class="header">标题三</div>
28             <div class="content hide">内容</div>
29         </div>
30         <div class="item">
31             <div class="header">标题四</div>
32             <div class="content hide">内容</div>
33         </div>
34     </div>
35     <script src="jqueryfile/jquery-3.2.1.js"></script>
36     <script>
37         $(".header").click(function() {
38             //筛选器  上一个$(this).prev()    $(this).parent()    $(this).children()  $(this).siblings()
39 //            $(this).next().removeClass('hide');
40 //            $(this).parent().siblings().find('.content').addClass('hide');
41 
42 //            既然筛选器可以一直点下去,那么我们是不是可以有一个大胆的想法呢
43 //            是的,jquery支持链式编程
44             $(this).next().removeClass('hide').parent().siblings().find('.content').addClass('hide');
45             //this 是指活动对象header;next==>下一个标签对象;parent父标签;siblings 是指除本身之外的所有兄弟标签
46         })
47     </script>
48 </body>
49 </html>
View Code

具体实例二、反选、全选两句话搞定

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <input type="button" value="全选" onclick="checkAll()"/>
 9 <input type="button" value="反选" onclick="reverseAll()" />
10 <input type="button" value="取消"  onclick="cancelAll()" />
11     <table border="1px">
12         <thead>
13             <tr>
14                 <th>选项</th><th>ip</th><th>port</th>
15             </tr>
16         </thead>
17         <tbody id="tb">
18             <tr>
19                 <td><input type="checkbox"></td><td>1.1.1.1</td><td>21</td>
20             </tr>
21             <tr>
22                 <td><input type="checkbox"></td><td>1.1.1.1</td><td>21</td>
23             </tr>
24             <tr>
25                 <td><input type="checkbox"></td><td>1.1.1.1</td><td>21</td>
26             </tr>
27             <tr>
28                 <td><input type="checkbox"></td><td>1.1.1.1</td><td>21</td>
29             </tr>
30         </tbody>
31     </table>
32     <script src="jqueryfile/jquery-3.2.1.js">    </script>
33     <script>
34         function checkAll() {
35             $("#tb :checkbox").prop("checked",true);
36         }
37         function cancelAll() {
38             $("#tb :checkbox").prop("checked",false);
39         }
40         function reverseAll() {
41             $("#tb :checkbox").each(function() {
42             //this 代指当前循环的元素,k下标
43                 //DOM方法
44 //            if(this.checked){
45 //                this.checked = false
46 //            } else {
47 //                this.checked = true
48 //            }
49 //                jquery方式
50 //                if($(this).prop('checked')){
51 //                    $(this).prop('checked',false);
52 //                }else {
53 //                    $(this).prop('checked',true)
54 //                }
55 //                三元运算 var v = 条件? 真值:假值  的方式实现
56                 var v = $(this).prop('checked')?false:true;
57                 $(this).prop('checked',v);
58 
59 
60             })
61         }
62     </script>
63 </body>
64 </html>
View Code

实例三、加上幕态化效果

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Title</title>
  6     <style>
  7         .cover{
  8             position: fixed;
  9             top:0;
 10             left:0;
 11             right:0;
 12             bottom:0;
 13             background-color: black;
 14             opacity: 0.5;
 15             z-index: 9;
 16         }
 17         .modal{
 18             z-index: 10;
 19             position: fixed;
 20             top:50%;
 21             left:50%;
 22             width: 400px;
 23             height: 250px;
 24             background-color: antiquewhite;
 25             margin-top: -100px;
 26             margin-left: -200px;
 27         }
 28         .hide{
 29             display: none;
 30         }
 31     </style>
 32 </head>
 33 <body>
 34 <div class="cover hide"></div>
 35 
 36 <div class="modal hide">
 37     <input name="ip" type="text" placeholder="ip"/>
 38     <input name="port" type="text" placeholder="port" />
 39     <div>
 40         <input type="button" value="确认" />
 41         <input type="button" value="取消" onclick="cancelModel()"/>
 42     </div>
 43 
 44 </div>
 45 
 46 
 47 
 48     <table border="1px">
 49         <thead>
 50             <tr>
 51                 <th><input type="button" value="添加" onclick="addModel()"/></th><th>ip</th><th>port</th><th colspan="2">操作</th>
 52             </tr>
 53         </thead>
 54         <tbody id="tb">
 55             <tr>
 56                 <td><input type="checkbox"></td><td>1.1.1.1</td><td>21</td><td><a class="edit">编辑</a></td><td>删除</td>
 57             </tr>
 58             <tr>
 59                 <td><input type="checkbox"></td><td>1.1.1.2</td><td>21</td><td><a class="edit">编辑</a></td><td>删除</td>
 60             </tr>
 61             <tr>
 62                 <td><input type="checkbox"></td><td>1.1.1.3</td><td>21</td><td><a class="edit">编辑</a></td><td>删除</td>
 63             </tr>
 64             <tr>
 65                 <td><input type="checkbox"></td><td>1.1.1.4</td><td>21</td><td><a class="edit">编辑</a></td><td>删除</td>
 66             </tr>
 67         </tbody>
 68     </table>
 69 <input type="button" value="全选" onclick="checkAll()"/>
 70 <input type="button" value="反选" onclick="reverseAll()" />
 71 <input type="button" value="取消"  onclick="cancelAll()" />
 72     <script src="jqueryfile/jquery-3.2.1.js"></script>
 73     <script>
 74         function checkAll() {
 75             $("#tb :checkbox").prop("checked",true);
 76         }
 77         function cancelAll() {
 78             $("#tb :checkbox").prop("checked",false);
 79         }
 80         function reverseAll() {
 81             $("#tb :checkbox").each(function() {
 82             //this 代指当前循环的元素,k下标
 83                 //DOM方法
 84 //            if(this.checked){
 85 //                this.checked = false
 86 //            } else {
 87 //                this.checked = true
 88 //            }
 89 //                jquery方式
 90 //                if($(this).prop('checked')){
 91 //                    $(this).prop('checked',false);
 92 //                }else {
 93 //                    $(this).prop('checked',true)
 94 //                }
 95 //                三元运算 var v = 条件? 真值:假值  的方式实现
 96                 var v = $(this).prop('checked')?false:true;
 97                 $(this).prop('checked',v);
 98             })
 99         }
100         function addModel() {
101             $('.cover, .modal').removeClass('hide');
102         }
103         function cancelModel() {
104             $('.cover, .modal').addClass('hide');
105             $('.modal input[type="text"]').val("")  //modal 里面 的文本框全部清空
106         }
107         $('.edit').click(function() {    // 编辑 点击事件
108             $('.cover, .modal').removeClass('hide');
109             var tds = $(this).parent().prevAll();
110             var port = $(tds[0]).text(); // port所在的标签td
111             var ip = $(tds[1]).text();  // ip所在的标签
112             $('.modal input[name="ip"]').val(ip);  // 赋值
113             $('.modal input[name="port"]').val(port);
114         })
115     </script>
116 </body>
117 </html>
View Code

实例四、幕态化 +自定义属性

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Title</title>
  6     <style>
  7         .cover {
  8             position: fixed;
  9             top: 0;
 10             left: 0;
 11             right: 0;
 12             bottom: 0;
 13             background-color: black;
 14             opacity: 0.5;
 15             z-index: 9;
 16         }
 17 
 18         .modal {
 19             z-index: 10;
 20             position: fixed;
 21             top: 50%;
 22             left: 50%;
 23             width: 400px;
 24             height: 250px;
 25             background-color: antiquewhite;
 26             margin-top: -100px;
 27             margin-left: -200px;
 28         }
 29 
 30         .hide {
 31             display: none;
 32         }
 33     </style>
 34 </head>
 35 <body>
 36 <div class="cover hide"></div>
 37 
 38 <div class="modal hide">
 39     <input name="ip" type="text" placeholder="ip"/>
 40     <input name="port" type="text" placeholder="port"/>
 41     <input name="host" type="text" placeholder="host"/>
 42     <div>
 43         <input type="button" value="确认" onclick="confirmModel()"/>
 44         <input type="button" value="取消" onclick="cancelModel()"/>
 45     </div>
 46 
 47 </div>
 48 
 49 
 50 <table border="1px">
 51     <thead>
 52     <tr>
 53         <th><input type="button" value="添加" onclick="addModel()"/></th>
 54         <th>ip</th>
 55         <th>port</th>
 56         <th>host</th>
 57         <th colspan="2">操作</th>
 58     </tr>
 59     </thead>
 60     <tbody id="tb">
 61     <tr>
 62         <td class="check"><input type="checkbox"></td>
 63         <td target="ip">1.1.1.1</td>
 64         <td target="port">21</td>
 65         <td target="host">21</td>
 66         <td><a class="edit">编辑</a></td>
 67         <td class="del">删除</td>
 68     </tr>
 69     <tr>
 70         <td class="check"><input type="checkbox"></td>
 71         <td target="ip">1.1.1.2</td>
 72         <td target="port">21</td>
 73         <td target="host">21</td>
 74         <td><a class="edit">编辑</a></td>
 75         <td class="del">删除</td>
 76     </tr>
 77     <tr>
 78         <td class="check"><input type="checkbox"></td>
 79         <td target="ip">1.1.1.3</td>
 80         <td target="port">21</td>
 81         <td target="host">21</td>
 82         <td><a class="edit">编辑</a></td>
 83         <td class="del">删除</td>
 84     </tr>
 85     <tr>
 86         <td class="check"><input type="checkbox"></td>
 87         <td target="ip">1.1.1.4</td>
 88         <td target="port">21</td>
 89         <td target="host">21</td>
 90         <td><a class="edit">编辑</a></td>
 91         <td class="del">删除</td>
 92     </tr>
 93     </tbody>
 94 </table>
 95 <input type="button" value="全选" onclick="checkAll()"/>
 96 <input type="button" value="反选" onclick="reverseAll()"/>
 97 <input type="button" value="取消" onclick="cancelAll()"/>
 98 <script src="jqueryfile/jquery-3.2.1.js"></script>
 99 <script>
100     function checkAll() {
101         $("#tb :checkbox").prop("checked", true);
102     }
103 
104     function cancelAll() {
105         $("#tb :checkbox").prop("checked", false);
106     }
107 
108     function reverseAll() {
109         $("#tb :checkbox").each(function () {
110             //this 代指当前循环的元素,k下标
111             //DOM方法
112 //            if(this.checked){
113 //                this.checked = false
114 //            } else {
115 //                this.checked = true
116 //            }
117 //                jquery方式
118 //                if($(this).prop('checked')){
119 //                    $(this).prop('checked',false);
120 //                }else {
121 //                    $(this).prop('checked',true)
122 //                }
123 //                三元运算 var v = 条件? 真值:假值  的方式实现
124             var v = $(this).prop('checked') ? false : true;
125             $(this).prop('checked', v);
126         })
127     }
128 
129     function addModel() {
130         $('.cover, .modal').removeClass('hide');
131     }
132 
133     function cancelModel() {
134         $('.cover, .modal').addClass('hide');
135         $('.modal input[type="text"]').val("")
136     }
137 
138     $('.edit').click(function () {
139         $('.cover, .modal').removeClass('hide');
140         var tds = $(this).parent().prevUntil('.check');
141 //        var port = $(tds[0]).text();
142 //        var ip = $(tds[1]).text();
143 //        $('.modal input[name="ip"]').val(ip);
144 //        $('.modal input[name="port"]').val(port);
145         console.log(tds);
146         tds.each(function(){
147             var attr = $(this).attr('target');
148             var text = $(this).text();
149             console.log(attr,text);
150             $('.modal input[name="'+ attr + '"]').val(text);
151 
152         })
153     });
154     $('.del').click(function() {
155         $(this).parent().remove()
156     });
157     function confirmModel() {
158         var tr = document.createElement('tr');
159         var td1 = document.createElement('td');
160         td1.innerHTML = '1.1.1.1';
161         var td2 = document.createElement('td');
162         td2.innerHTML = '23';
163         var td3 = document.createElement('td');
164         var td3_check = document.createElement('checkbox');
165         $(td3).append(td3_check);
166         $(tr).append(td3);
167         $(tr).append(td1);
168         $(tr).append(td2);
169         $('#tb').append(tr);
170         $('.cover, .modal').addClass('hide');
171 
172     }
173 </script>
174 </body>
175 </html>
View Code

注意一下,这一次编辑是抓取文本内容赋值给text框的jquery语句

实例五、标签菜单栏

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .header{
 8             width:100%;
 9             height: 50px;
10             background-color: #073763;
11         }
12         .menu{
13             margin: 0 auto;
14             background-color: #6e6568;
15             width: 400px;
16             height:50px;
17             border: 1px solid blueviolet;
18         }
19         .menu .menu-item{
20             line-height: 49px;
21             float: left;
22             border: 1px solid dimgrey;
23             cursor: pointer;
24             padding:0 10px;
25         }
26         .content{
27             margin:0 auto;
28             width: 400px;
29             border: 1px solid saddlebrown;
30             height: 500px;
31         }
32         .active{
33             background-color: mediumseagreen;
34         }
35         .hide{
36             display: none;
37         }
38     </style>
39 </head>
40 <body style="margin: 0px;">
41     <div class=" header"></div>
42     <div class="menu">
43         <div class="menu-item active" a="1">菜单一</div>
44         <div class="menu-item" a="2">菜单二</div>
45         <div class="menu-item" a="3">菜单三</div>
46         <div style="clear:both;"></div>
47     </div>
48     <div class="content">
49         <div b="1">内容一</div>
50         <div class="hide" b="2">内容二</div>
51         <div class="hide"b="3">内容三</div>
52     </div>
53     <script src="jqueryfile/jquery-3.2.1.js"></script>
54     <script>
55         $(".menu-item").click(function() {
56             $(this).addClass("active").siblings().removeClass("active");
57 //            自定义属性获取
58 //            $(".content").children('[b="'+$(this).attr('a')+'"]').removeClass("hide").siblings().addClass("hide");
59 //            index获取
60             $(".content").children().eq($(this).index()).removeClass('hide').siblings().addClass('hide')
61         })
62     </script>
63 </body>
64 </html>
View Code

jquery事件

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <a onclick="clickOn()" href="http://www.baidu.com">走你</a>
 9     <script>
10         function clickOn() {
11             alert(123);
12         }
13     </script>
14     <!--clickon事件先于标签本身的事件执行-->
15     <!--<a onclick="return clickOn()" href="http://www.baidu.com">走你</a>-->
16     <!--<script>-->
17         <!--function clickOn() {-->
18             <!--alert(123);-->
19             <!--return false-->
20         <!--}-->
21     <!--</script>-->
22     <!--如果事件返回 false则不执行本身的事件-->
23 <!--jquery里面也是一样  return false就可以了-->
24 </body>
25 </html>
View Code

表单提交

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <form action="s1.html" method="post">
 9         <div><input type="text" /><input type="submit" value="提交" /></div>
10 
11     </form>
12 <script src="jqueryfile/jquery-3.2.1.js"></script>
13 <script>
14     $(":submit").click(function() {
15         var v = $(this).prev().val();
16         if(v.length>0){
17             return true;
18         }else {
19             alert("请输入内容");
20             return false
21         }
22     })
23 </script>
24 </body>
25 </html>
View Code

表单提交的提示信息

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .error{
 8             color:red;
 9         }
10     </style>
11 </head>
12 <body class="i1">
13     <form action="s1.html" method="post">
14         <div><input type="text" /></div>
15         <div><input type="text" /></div>
16         <div><input type="text" /></div>
17         <div><input type="text" /></div>
18         <div><input type="password" /></div>
19         <div><input type="text" /></div>
20         <input type="submit" value="提交" />
21     </form>
22 <script src="jqueryfile/jquery-3.2.1.js"></script>
23 <script>
24     $(":submit").click(function() {
25         $(".error").remove();
26         var flag = true;
27 
28         $('form').find("input[type='text'],input[type='password']").each(function() {
29             var v = $(this).val();
30             if(v.length<=0){
31                 flag = false;
32                 var tag = document.createElement('span');
33                 tag.innerHTML='必填';
34                 tag.className = "error";
35                 $(this).after(tag);
36             }
37         });
38         return flag
39     });
40 
41 
42 </script>
43 </body>
44 </html>
View Code

点赞效果

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .container{
 8             width: 500px;
 9             height: 50px;
10             border: 1px solid orangered;
11         }
12         .item{
13             position: relative;
14             padding: 10px;
15             width: 30px;
16         }
17     </style>
18 </head>
19 <body>
20     <div class="container">
21         <div class="item">
22             <span></span>
23 
24         </div>
25     </div>
26     <div class="container">
27         <div class="item">
28             <span></span>
29         </div>
30     </div>
31     <div class="container">
32         <div class="item">
33             <span></span>
34         </div>
35     </div>
36     <script src="jqueryfile/jquery-3.2.1.js"></script>
37     <script>
38         $(".item").click(function() {
39             addFavor(this)
40         })
41         function addFavor(self) {
42             var tag = document.createElement("span");
43             var fontsize = 10;
44             var top = 10;
45             var right = 6;
46             var opacity = 1;
47             $(tag).text("+1");
48             $(tag).css("color",'grey');
49             $(tag).css("position",'absolute');
50             $(tag).css("fontSize",fontsize+"px");
51             $(tag).css("right",right+"px");
52             $(tag).css("top",top+"px");
53             $(tag).css("opacity",opacity);
54             $(self).append(tag);
55 
56             var obj = setInterval(function() {
57                 fontsize = fontsize +5;
58                 top = top - 7;
59                 right = right -7;
60                 opacity = opacity -0.15;
61                 $(tag).css("fontSize",fontsize+"px");
62                 $(tag).css("right",right+"px");
63                 $(tag).css("top",top+"px");
64                 $(tag).css("opacity",opacity);
65 
66                 if (opacity < 0){
67                     clearInterval(obj);
68                     $(tag).remove()
69                 }
70             }, 50);
71 
72 
73         }
74     </script>
75 </body>
76 </html>
View Code
原文地址:https://www.cnblogs.com/wuzdandz/p/7906062.html