锋利的 jQuery 学习笔记

一、选择器:
:eq() - 选取带有指定 index 值的元素,从0开始计数

var $li = $( ‘ul li : eq(1)’ ); //获取当前 ul 节点里第2个 li 节点
var li_txt = $li.text(); //获取文本内容
alert( li_txt ); // 打印文本内容

高级选择器:
get()方法获取由选择器指定的 DOM 元素。$().get(2)
find()jq提供的一个等价的后代选择器。(子选择器+孙选择器集合)
chidren()等价子选择器。(子选择器) 同 #div > p 的形式,从右往左匹配执行
prev()同一个同级的上一个节点元素,同next()相反是后一个。
siblings()上下同级的所有元素,prev() 和 nextAll() 的简化,
选择器如果不传参,则就相当于传递了 * 号(全局),会造成性能浪费,所以最好带参数。

$(“div”).find(".p").addClass(“wang”)

查找 div中的子元素,且子元素的class有p,给这个子元素添加wang的class

$('#box').find('p') - #box下的所有p标签

执行的速度是最快 的,会使用getElementById() - 对应 #box、ByName、ByTagName - 对应 p 和 querySelectorAll() - 执行css样式;

如果一开始对`$(’#box’)进行赋值,那么jq 就对其变量进行缓存,速度会更快:
var box = $(’#box’);
var p = box.find(‘p’);

//get() 返回原生的 document节点
$(function() {
//if() 的话返回值就是 true 或者 false
    if($('#box').get(0)) {  //如果$('#box').get(0) / (第一个box)值存在,就执行下面的代码
        $('#box').css('color','red');
    }
})

$(’ #box .pull-left ') - 选择器越复杂,字符串解析就越慢

#box > p 高级选择器在ie6上是不支持。


二、jQuery 过滤选择器 === css伪类选择符(器),可以做到兼容 ie6~8 :

选择器的例子:地址
在这里插入图片描述

jquery提供的常用选择器的专用四个方法:
方法:
$('li)').eq(-2) —— 倒数第二个li,负数没有0,从1开始。$('li)').last()'
$('li)').first()$('li)').not('.red')

在这里插入图片描述
$(‘li:nth-child(3n)’) - 每隔3倍显示,3、6、9 。3n+1 - 3倍的第四个显示,4、7、10,这里的3n也就是中间少两个

/*
匿名函数中的 $(this) 就等于 执行中的 $('.red') 本身,因为扩展性会更好。
*/

alert($('.red').is(function() {
     return $(this)
}))

/*
用for来打印对象数组
*/
var box = $('div').css(['color','width','height']);
for (var i in box) {
    alert(i[0]); // 返回color
}

/*
$each() 可以遍历原生态的javascript对象数组,代替for
也可以遍历 jquery 对象数组
*/
var box = $('div').css(['color','width','height']);
$each(box,function(attr,value) {
    alert(attr + ':' value)                // attr 拿到数组的属性名,value 拿到具体的属性值
})
//遍历jq数组:
$('div').$each(function(index,element) {
    alert(index + ':' element)            //index 为索引,element为dom
})


三、添加calss类:

在这里插入图片描述

利用toggleClass 添加 / 删除 class

$('div').click(function() {
    $(this).toggleClass(function() {
        // 局部变量
        if ($(this).hasClass('red')) {
             $(this).removeClass('red');
             return 'green';
        } else {
             $(this).removeClass('green');
             return 'red';
        }
    })
})
jq绑定事件:

bind(type,[data],fn): 可以传递三个参数,type - 事件名称,data-可选,传递额外数据,fn - 处理函数

// 通过对象键值对 绑定多个参数
$('input').bind({
// mouseout - 键,冒号逗号分隔
   'mouseout': function() {
       alert('移出');
   },
   'mouseover': function() {
       alert('移入');
   }
})

//删除事件
$('input').bind('click',fn1);  //绑定函数
$('input').bind('click',fn2);
function fn1() {
   alert('fn1')
}
function fn2() {
   alert('fn2')
}

$('input').unbind('click',fn2); // 删除绑定了click事件的fn2

//over 会触发子节点,而enter则不会触发
$('div').mouseover(function() {
    $('strong').html(function(index,value) {    //index为索引值
        return value + '1'
    })
})

在这里插入图片描述


2、查找属性节点

atrr()方法 - 设置或返回被选元素的属性值
var $para = $(’ p ‘); // 获取到 p节点
var p_txt = $para.atrr(’ title ‘); // 获取到 p节点属性title
alert(’ p_txt '); // 打印title值

if()方法 - is(’:visible’) 如果内容显示

补充:
$(this).addClass(‘active’); 为.head 添加类名
c o n t e n t . a d d C l a s s ( ′ a c t i v e ′ ) ; 为 变 量 为 content.addClass('active'); 为变量为 content.addClass(active);content添加类名;removeClass() 删除类名


3、在javascript代码中,通常使用window.onload 方法,而在jQuery中,$(document).ready()方法使用最常见;

执行机制:
1、window.onload 是在网页中所有的元素完全加载到浏览器后才执行,即js此时才可以访问网页中的任何元素;
2、 ( d o c u m e n t ) . r e a d y ( ) 则 完 全 可 以 在 D O M 完 全 就 绪 时 即 被 调 用 ; 3 、 (document).ready() 则完全可以在DOM完全就绪时即被调用; 3、 (document).ready()DOM3(windowt).load() 方法会在所有内容加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发;


4、事件绑定:bind()方法可以对匹配元素进行特定事件的绑定;

适用单个切换:

$(function(){
  $('.head').bind('click', function() {
    var $content = $('.pp'); //找到要隐藏的元素并给它定义一个局部变量$content
    if($content.is(':visible')) {
      $content.hide();
    }else {
      $content.show();
    }
  })
})

<p class="head">如果你点我,pp就会消失。</p>
<p class="pp">继续点我!</p>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于 jQuery 的事件,我可以和你分享一些学习笔记。 1. 绑定事件 在 jQuery 中,我们可以通过以下方式来绑定事件: ``` $(selector).event(function(){ // 事件处理程序 }) ``` 其中,`selector` 表示要绑定事件的元素,`event` 表示要绑定的事件类型,比如 `click`、`mouseover` 等等。事件处理程序则是在事件触发时要执行的代码块。 2. 多个事件绑定 我们可以通过 `on()` 方法来同时绑定多个事件: ``` $(selector).on({ event1: function(){ // 事件处理程序1 }, event2: function(){ // 事件处理程序2 } }) ``` 这样,当 `event1` 或 `event2` 中任意一个事件触发时,对应的处理程序都会被执行。 3. 解除事件 如果需要解除某个元素的事件处理程序,可以使用 `off()` 方法: ``` $(selector).off(event); ``` 其中,`event` 表示要解除的事件类型。如果不指定事件类型,则会解除该元素上所有的事件处理程序。 4. 事件委托 在 jQuery 中,我们可以使用事件委托来提高性能。事件委托是指将事件绑定到父元素上,而不是绑定到子元素上,然后通过事件冒泡来判断是哪个子元素触发了该事件。这样,当子元素数量较多时,只需要绑定一次事件,就可以监听到所有子元素的事件。 ``` $(selector).on(event, childSelector, function(){ // 事件处理程序 }) ``` 其中,`selector` 表示父元素,`event` 表示要绑定的事件类型,`childSelector` 表示要委托的子元素的选择器,事件处理程序则是在子元素触发事件时要执行的代码块。 以上是 jQuery 中事件的一些基本操作,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值