美文网首页我爱编程
jQuery知识点记录

jQuery知识点记录

作者: BryantHe | 来源:发表于2017-07-04 18:11 被阅读31次

    关于jQuery的知识点记录

    1.jQuery基础

    core functionality: getting some elements and doing something with them.

    jQuery的核心能力:获取元素,然后操作之

    jQuery() = $()
    

    由于JS中一切皆对象,函数也不例外,所有$()也有属性和方法,这也是jQuery实现获取元素,并对其操作的基础。

    即$()的参数是DOM元素,这样就获取了这个DOM元素,然后在$()后面加上属性或方法,这样可以操作被选定的DOM元素。

    2.$(document).ready( function() { /.../ } )

    功能和 window.onload 一样,是等待页面加载好了再对页面操作,简写是$(function() { /.../ } )

    不过这里$(document)是从页面的DOM树创建了jQuery对象,然后用.ready()作用在jQuery对象,对.ready()传入我们将要执行的函数

    3.对$()传入CSS选择器

    传入标准的的CSS选择器,以此来获取DOM元素,这个好理解,比如$( 'img' )

    但值得注意的一点:这样获取DOM元素并不是动态的,即$( 'img' ),选定了这个img后,如果你又新加入了一个img,那么之前$( 'img' )选定的img不会包含这个后面新加入的img。

    4.创建jQuery对象的其他方法

    $( document.body.children[0] ) 这个方法就是用DOM的方式,选择body元素的第一个子元素

    $( [ window, document ] ) 用list包含所有DOM元素,然后传入jQuery

    // make a selection in the context of a DOM element
    var firstBodyChild = document.body.children[0];
    $( 'li', firstBodyChild );
    
    // make a selection within a previous selection
    var paragraph = $( 'p' );
    $( 'a', paragraph );
    
    5.判断是否获得了元素

    因为$()永远返回true,所以用简单 if ( $() ) 无论获取到元素没有,都返回true。

    所以要用length属性来判断:

    if ( $( '#nonexistent' ).length > 0 ) {
    // Correct! This code will only run if there's an element in your page
    // with an ID of 'nonexistent'
    }
    

    简写:
    因为0是falsy value,所以可以如下简写,如果返回的是0,则是false

    if ( $( '#nonexistent' ).length ) {
    // This code will only run if there's a matching element
    }
    
    6.对获取的单一元素使用jQuery方法

    这时候必须用eq(),参数为元素的索引值,例子:

    var listItems = $( 'li' );
    var secondListItem = listItems.eq( 1 );
    secondListItem.remove();
    

    不用eq()的话,就只能用DOM属性了:

    var listItems = $( 'li' );
    var rawListItem = listItems[0]; // or listItems.get( 0 )
    var html = rawListItem.innerHTML;
    
    7.用jQuery创建新元素

    对$()传入一个html标签,比如<p>或者<p>xxxx</p>或者<p class="xxx">xxxx</p>,则jQuery会创建它,存入内存,等待下一步处理。

    这个和获取元素的区别在于,获取元素的话是直接写元素名,比如li,而创建则是写<li>

    然后,关于创建元素还有一点,比起一条全部写完(比如<p class="xxx">xxxx</p>),还可以传入对象来精确定制:

    $( '<p>', {
      html: 'Hello!',
      'class': 'greet'
    });
    

    注意class属性必须用''包住,因为class是JS的保留关键字。

    至于后续怎么处理这些被创建的元素,留待后面。

    8. DOM的层级
    <ul>
        <li>
            <span>
                <i>Foo</i>
            </span>
        </li>
        <li>Bar</li>
    </ul>
    

    The first list item is a child of the unordered list.
    The unordered list is the parent of both list items.
    The span is a descendant of the unordered list.
    The unordered list is an ancestor of everything inside of it.
    The two list items are siblings.

    9. 过滤(遍历之一)
    var listItems = $( 'li' );
    
    // filter the selection to only items with a class of 'special'
    var special = listItems.filter( '.special' );
    
    // filter the selection to only items without a class of 'special'
    var notSpecial = listItems.not( '.special' );
    
    // filter the selection to only items that contain a span
    var hasSpans = listItems.has( 'span' );
    

    三个过滤方法filter, not, has,其中filter和not是反义,而has则过滤当前元素的后代。

    10. 上下左右(遍历之一)
    // get the first list item on the page
    var listItem = $( 'li' ).first(); // also: .last()
    
    // get the siblings of the list item
    var siblings = listItem.siblings();
    
    // get the next sibling of the list item
    var nextSibling = listItem.next(); // also: .prev()
    
    // get the list item's parent
    var list = listItem.parent();
    
    // get the list items that are immediate children of the list
    var listItems = list.children();
    
    // get ALL list items in the list, including nested ones
    var allListItems = list.find( 'li' );
    
    // find all ancestors of the list item that have a class of "module"
    var modules = listItem.parents( '.module' );
    
    // find the closest ancestor of the list item that has a class of "module"
    var module = listItem.closest( '.module' );
    
    11.

    相关文章

      网友评论

        本文标题:jQuery知识点记录

        本文链接:https://www.haomeiwen.com/subject/eupxhxtx.html