4011—JQuery随笔

一、DOM选择元素

          标签元素(div、a、p)写前面加空格,类名称要加点,id名称加#号。

          符号说明

  •           【>】为选择直系第一代后代,而非全部后代。

         1—class选择 

/*
  div标签类型,poem-stanza为div的class类型名称
  <div class="poem">
     <div class="poem-stanza">
     </div>
  </div>      
*/
$('div.poem-stanza').addClass('highlight');

       2—标签选择

/*
  <div id="selected-play">
    <ul>
        <li>伍百里</li>
        <li>伍千里</li>
        <li>伍万里</li>
        <li>梅生</li>        
    </ul>
  </div>
*/
$('#selected-plays > li').addClass('horizoutal');
//选择未指定horizoutal class样式的li标签,指定class样式
$('#selected-plays li:not(.horizoutal)').addClass('sub-level');

       3—属性选择

/*
   <a href="mailto:wuqianli@military.cn"></a>
   <a href="ChangJinLake.pdf"></a>
   <a href="http://bettleOfLake-changjin.mov.cn"></a>
*/
//属性值,匹配开头
$('a[href^="mailto"]').addClass('mailto');
//属性值,匹配结尾
$('a[href$=".pdf"]').addClass('pdflink');
//属性值多匹配,条件1—开头,条件二—任意位置
$('a[href^="http"][href*="changjin"]').addClass('henrylink');

      4—自定义选择符

/*
   <table>
        <tr>  <td>20军</td><td>预备队</td>
        </tr>
        <tr>  <td>26军</td><td>主攻</td>
        </tr>
        <tr>  <td>27军</td><td>助攻</td>
        </tr>
   </table>     
*/
//even—为奇数,odd—偶数;会循环页面内全部tr标签
$('tr:even').addClass('alt');
//过滤用法
$('tr').filter(':even').addClass('alt');

//范围为元素的父元素下的元素集合,也是唯一索引值从1开始的选择符。
$('tr:nth-child(odd)').addClass('alt');

//上下文内容选择符
$('td:contains(27)').addClass('highlight');

//表单选择,取已点击的单选框的元素
$('input[type="radio"]:checked').addClass('highlight');

//location.hostname一般为localhost
$('a').filter(function(){
    return this.hostname && this.hostname !=location.hostname    
}).addClass('external');

//筛选的单元格的下一个兄弟元素
$('td:contains(27)').next().addClass('highlight');
//筛选的单元格后面的所有元素
$('td:contains(27)').nextAll().addClass('highlight');
//.prev()指定元素的上一个;.prevAll()指定元素的前面所有兄弟元素
//指定单元格及后面所有单元格应用样式
$('td:contains(27)').nextAll().addBack().addClass('highlight');

    5—连缀

/*
    parent—取元素集的父元素
    find('td:eq(1)')—查找第2个单元格
    end()—恢复父元素位置
    find('td:eq(2)')—查找第3个单元格        
*/
$('td:contains(27)').parent().find('td:eq(1)')
  .addClass('highlight').end().find('td:eq(2)')
  .addClass('highlight');

    6—访问DOM元素 

/*
   获取id=mynode属性的元素的标签名称
   下面2句是等价的 
*/
var myTag=$('#mynode').get(0).tagName;
var myTag=$('#mynode')[0].tagName;

   7—this与$(this)  

//this为javascript的关键字,为html指代元素
var sid=this.target.id;
//$(this)为jQuery的关键字,为jquery指代元素
$(this).css('display','none');
//典型错误和注意点
var node=$('#myapp');
node.click(function(){
   this.css('display','block');     //错误。css为jQuery的方法。html元素不能调用jQuery方法。
   $(this).css('display','block');  //正确。
   this.style.display='block';      //正确。js语法。
})

    jQuery已经封装了DOM很多方法和属性,一般使用$(this)是不错的选择。

    但不要滥用$(this)。

    11—后代选择

<ul class="nav nav-pills">
    <li class="active"><a href="#">Home</a>         </li>
    <li><a href="#">配置</a></li>
    <li>
        <a href="#">信息栏<span id="badge" class="badge">11</span></a>
    </li>
</ul>

//下面三组选择命令等价
//   格式1
//   $('.nav-pills li a span').each(function(index){          
//    格式2
//    $('.nav-pill>li span').each(function(index){ 
//    格式3
//$('.nav-pills a>span').each(function(index){
      console.log(index);
      console.log($(this).text());
    })

 解释:略。

二、事件

    1—页面加载函数

//    2种方法是等价的
$(document).ready(function(){
})
$(function(){
})

/* windows.onload与$(document).ready()异同
   多个$(document).ready()执行会依次执行;而windows.onload也可以注册多个函数,不能保证按顺序执行
*/

    2—事件捕获、阻止和阻止默认操作

//阻止事件捕获和阻止默认操作是相互独立的两套机制
$('#node').click(function(event){
   //阻止事件捕获
   event.stopPropagation(); 
   //阻止默认操作,例如 <a>锚元素的,触发单击。
   event.preventDefault();
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值