jquery的知识点:

  • parents parent
  • closest
  • first last slice
  • prev next
  • find 找下多层
  • children 只找下一层
  • filter map each
//代码示例
<div class="demo">
  <ul class="lang">
    <li class="js dy">JavaScript</li>
    <li class="dy">Python</li>
    <li id="swift">Swift</li>
    <li class="dy">Scheme</li>
    <li name="haskell">Haskell</li>
  </ul>
</div>
//parents 获取所有的父元素,可以指定查找
//parent,获取直接父元素,可以指定查找
$("#swift").parents(".demo").get(0); //<div class="demo">..</div>
$("#swift").parent().get(0); //<ul class="lang">..</ul>
//closet,表示从当前元素开始找,然后依次开始从父元素中找,和parents的区别是parents从父元素中开始找
$(".lang").closest(".lang").get(0); //<ul class="lang">..</ul>,包括当前元素
$(".js").closest(".lang").get(0); //<ul class="lang">..</ul>,选取其父元素
//first, last, slice
//一个jQuery对象如果包含了不止一个DOM节点,first()、last()和slice()方法可以返回一个新的jQuery对象
var langs = $('ul.lang li'); // 拿到JavaScript, Python, Swift, Scheme和Haskell
var js = langs.first(); // JavaScript,相当于$('ul.lang li:first-child')
var haskell = langs.last(); // Haskell, 相当于$('ul.lang li:last-child')
var sub = langs.slice(2, 4); // Swift, Scheme, 参数和数组的slice()方法一致,不包含第5个元素

//li中的选择
$('ul.lang li'); // 选出JavaScript、Python和Lua 3个节点
$('ul.lang li:first-child'); // 仅选出JavaScript
$('ul.lang li:last-child'); // 仅选出Lua
$('ul.lang li:nth-child(2)'); // 选出第N个元素,N从1开始
$('ul.lang li:nth-child(even)'); // 选出序号为偶数的元素
$('ul.lang li:nth-child(odd)'); // 选出序号为奇数的元素
//next, prev
//位于同一层级的节点,可以通过next和prev方法
var swift = $('#swift');
swift.next(); // Scheme
swift.next('[name=haskell]'); // Haskell,因为Haskell是后续第一个符合选择器条件的节点
swift.prev(); // Python
swift.prev('.js'); // JavaScript,因为JavaScript是往前第一个符合选择器条件的节点
//find, 找下多层
var ul = $('div.demo'); // 获得<ul>
var dy = ul.find('.dy'); // 获得JavaScript, Python, Scheme
var swf = ul.find('#swift'); // 获得Swift
var hsk = ul.find('[name=haskell]'); // 获得Haskell
//children, 找下一层
var ul = $("ul.lang").children().first().get(0);
//filter, map, each
var langs = $('ul.lang li'); // 拿到JavaScript, Python, Swift, Scheme和Haskell
var a = langs.filter('.dy'); // 拿到JavaScript, Python, Scheme

//或者传入一个函数,要特别注意函数内部的this被绑定为DOM对象,不是jQuery对象
var langs = $('ul.lang li'); // 拿到JavaScript, Python, Swift, Scheme和Haskell
langs.filter(function () {
    return this.innerHTML.indexOf('S') === 0; // 返回S开头的节点
}); // 拿到Swift, Scheme

//map()方法把一个jQuery对象包含的若干DOM节点转化为其他对象
var langs = $('ul.lang li'); // 拿到JavaScript, Python, Swift, Scheme和Haskell
var arr = langs.map(function () {
    return this.innerHTML;
}).get(); // 用get()拿到包含string的Array:['JavaScript', 'Python', 'Swift', 'Scheme', 'Haskell']

results matching ""

    No results matching ""