jQuery2

JS对象和jQuery对象的方法能否共用?
不能!

对象是否可互换?
可以! $(dom)

this代表的是dom对象
$(this)代表的是jQuery对象,后面可以用jq方法

js对象和jq对象的区别是什么?
jq对象就是js中的new object生成的普通对象

如何把jq对象转换为js对象?
var val= $("h1")[0].outerHTML;
var val = $("h1").get(0).outerHTML;

var val = $("h1").html
代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>单击换行号</title>
    <script src="dashboard/jquery-3.2.1.min.js"></script>
</head>
<body>
<h1>aa</h1>
<h1>aa</h1>
<h1>aa</h1>
<h1>aa</h1>
<h1>aa</h1>
</body>
<script>
    如下
</script>
</html>

~~~补充一条css中的方法..之前一直想用,可是没找 : 鼠标划上去变小手(cursor :)

核心方法

1. attr() :要修改标签的属性,就如下代码,会给h1标签里面增加一个num属性.
2. data() : 往jQuery对象身上赋属性或者值,他不会动标签属性.只是通过data存进去一个值,然后再通过data取出来.  建议用data.

3. each();遍历,

    for循环在jquery里面的代名词就是each,
    $("h1").each(function (i) {
//        alert(i)
//        $("h1").get()[i]  #转换为dom对象
//        $("h1").get()[i].setAttribute("num",i+1)   js方法
        $(this).data({'num':'i+1'})
    });

//    批量加
    $('h1').click(function () {
//        this.innerHTML = this.getAttribute("num")  js方法
        $(this).html($(this).data('num'))
    })
    把五个h1标签对象进行遍历.
    
    

#获取jquery对象中dom对象的个数
4. size();   #dom对象个数
5. length;  俩其实一样,只不过这个是属性


6. get(); 全拿出来,是个数组,类似于对象集合
7. get(index);   得到对象,用于互换身份

8. index(); 它只是找到索引位置,
9. eq(index); 他是把该索引位置的标签对象拿到

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <style>
        *{
            margin: 0px;
            padding: 0px;
            font-family:Sana;
        }
        .menu{
            height: 50px;
            line-height: 40px;
            background: #272822;

        }
        .menu ul{
            list-style: none;
        }

        .menu ul li{
            float: left;
            color: #fff;
            margin-left: 15px;
            line-height: 50px;
            text-align: center;
            width: 100px;
        }
        
        .menu ul li:hover{
            cursor:pointer;
            background: #ccc;
        }
        
        .menu ul li:first-child{
            /*background: #cccccc;*/
        }
        
        .info{
            height: 200px;
            background: #cccccc;
            overflow: hidden;
            padding: 15px;
            color: #fff;
        }

        .info p {
            display: none;
        }

        .info p:first-child{
            display: block;
        }


    </style>
    <script src="dashboard/jquery-3.2.1.min.js"></script>
</head>
<body>
<div class="menu">
<ul>
    <li>bigfly</li>
    <li>sbxy</li>
    <li>666</li>
</ul>
</div>

<div class="info">
    <p>bigfly!!!???bigfly!!!???</p>
    <p>666!!!???666!!!???</p>
    <p>xysb!!!???xysb!!!???</p>
</div>
</body>
<script>
    $('.menu li').eq(0).css({'background':'#ccc'});
    $('.menu li').mouseenter(function () {
        $(this).css({'background':'#ccc'});
        $('.menu li').not($(this)).css({'background':'#272822'});

        //查this在所有的li里面排第几个
        var idx = $(this).index('.menu li');
        $('.info p').eq(idx).show();
        $('.info p').not($('.info p').eq(idx)).hide()
    })
</script>
</html>
jQuery中$方法冲突,解决办法 :
  1. $();
  2. jQuery();
: 是用来修饰前面的选择器的,都是修饰器,基本不能单独存在,如果知道是要修饰谁可以不加选择器

. 是方法
基本选择器
:even 偶数
:odd  奇数
:eq(1)   索引等于1
:gt(1)   大于1
:lt(1)   小于1
内容选择器
:has()    $('div:has(a)') 含有a标签的div标签
:empty   空的
:parent  匹配有孩子的父亲,含有子标签或者文本的元素,空格都算.


表单对象属性 :
:checked 找到所有被选中的元素(不包括select中的option)


筛选和基础选择器(  > + ~)共同的任务都是找元素

.add() 串联筛选器
.andSelf  串联上自己   $('div').next().andSelf().css({'color':'#ccc'}) 


查找
筛选
第一种父子关系或者祖先和后代关系
关系查找:
parent() 父亲
children() 孩子 子元素

第二种就是同辈关系,也就是兄弟关系

关系查找
prev() 上一个兄弟
prevAll() 上面所有的兄弟
next()下一个兄弟
nextAll() 后面所有的兄弟
sibilings() 前后所有的兄弟
find() 后代查找
属性
1. 属性
attr();
attr({});   获取属性值,建议使用{}

2. CSS类
addClass(); 给一个标签加类名
removeClass();
toggleClass(); 切换类

3. HTML代码
html();
html(val);

4. 文本
text();
text(val);

5. 值
val();
val(val);  可获取也可以赋值
文档处理
######内部插入 剪贴作用
append(content|fn)-->往后加
appendTo(content)
A.append(B) 把B添加到A后面
A.appendTo(B) 把A添加到B的后面 

######外部插入
往前加
A.before(B) 把B插入到A的前面
A.insertBfore(B) 把A插入到B的前面
往后加
A.after(B) 把B插入到A的后面
A.insertAfter(B)  把A添加到B的后面

######包裹  
选中一个等待被包裹的对象,后面就是拿什么包.
wrap()
unwrap()  取消.wrap()方法的效果.
wrapAll()  将所有匹配的元素用单个元素包裹起来.如果中间有别的标签,会将不匹配的标签拿出来放到效果后.
wrapInner() 弥补ALL的缺陷

######替换
replaceWith()
    A.replaceWith(B)   B替换A
replaceAll() 前面的替换后面的

######删除
empty()  内容清空,标签还在,内部清空
remove()  删除,整体都删除
detach() 从DOM中删除所有匹配的元素,与remove()不同的是,所有绑定的事件和附加的数据等都会包保留下来.

######复制
clone([Even[,deepEven]])   #后面可以加一个参数true,事件都克隆

#####动画

基本
    show([s,[e],[fn]])
    hide([s,[e],[fn]])
    toggle([s],[e],[fn])
    
滑动
    实际上是改变的元素的高度
    slideDown([s],[e],[fn])
    slideUp([s,[e],[fn]])
    slideToggle([s],[e],[fn])
    
淡入淡出 : 透明度
    fadeIn([s],[e],[fn])
    fadeOut([s],[e],[fn])
    
    fadeTo([[s],o,[e],[fn]])
        - 淡出到0.66透明度
    fadeToggle([s,[e],[fn]])
        - .fadeToggle(3000, function () {
            alert("666");
        });
        
自定义
animate(p,[s],[e],[fn])1.8*
    - css属性值都可以设置
    - 女朋友变小(漏气)

######事件处理
    
    之前绑定事件的方式:
        1. onclick=clickMe();  function clickMe() {}
        2. ele.onclick = function(){}
        3. ele.addEventListener("click", function(){})
    
    jQuery绑定事件的方式:
        1. $(ele).on("click", function(){})
如果不需要使用事件委托的话.可以直接写$(ele).click(function(){})
        2. $("tbody").delegate(".btn-warning", "click", function(){})
        3. $("tbody").on("click",".btn-warning",function(){})  我们要用的事件委派

$("tbody").on("click",".btn-warning",function(){})

$(ele).on("click", function(){})

$(ele).click(function(){})

编辑操作:
弹出模态框
然后给模态框赋值:   1.取值 2.赋值
点击模态框上的提交按钮. 1. 隐藏模态框.  2. 更新td的值.
常用事件!!


重点:
jQuery扩展 : 
#### e.target与this的区别

event.target表示发生点击事件的元素
this表示注册点击事件的元素

this 等于 e.currentTarget  指的是现在的目标
this是所有原生函数具有的,进入函数时,this已经有了目标对象

而e.target是通过e再寻找target,中转了一下. 所以相比较而言,this的执行效率更高一些.

有元素嵌套时,这两个就不相等了.
<div><img src="..."></div>

<script>
$('div').click(function() {
e.target 表示事件触发元素这里会是img
this 始终指向绑定事件的元素也就是div
});
</script>
```
#### 事件捕获和事件冒泡
Example:
    <div>
        <p>元素</p>
    </div>
    
这俩元素都绑定了click事件,如果用户点击了p,它在div和p上都触发了click事件,那这两个事件处理程序哪个先执行?事件顺序是什么?

事件冒泡 : 当你使用事件冒泡时,子级元素先触发,父级元素后触发. 也就是p先触发
事件捕获 : 使用事件捕获时,父级元素先触发,子级元素后触发. 也就是div先触发

在W3C模型中,可以自己选择使用绑定事件时,使用冒泡还是捕获.
方法 : addEventListener函数. 它包含三个参数,第三个参数如果是true就采用事件捕获,如果是false就采用事件冒泡.

ele.addEventListener('click',function(),true/false)

true : 事件句柄在捕获阶段执行
false : 默认为false.事件句柄在冒泡阶段执行

```
jQuery扩展
$.***()
    给jQuery添加扩展
    $.extend({
    'aa':function(){
        console.log('666)})
        $.aa()
        
$('').***()
    给jQuery对象添加将扩展
    $.fn.extend({
    'bb':function(){
        console.log('777')
        }
    })
    
    $(':input').bb()
文档树加载完之后绑定事件(大部分情况下)
    $(document).ready(function){
    }
    简写
    $(function($){
    }

转载于:https://www.cnblogs.com/ugfly/p/7711260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值