首頁  >  文章  >  web前端  >  jquery中prev、next和siblings選擇器實例展示

jquery中prev、next和siblings選擇器實例展示

巴扎黑
巴扎黑原創
2017-06-22 14:34:071787瀏覽

在js中prev、next和siblings三個方法是指上一個,下一個及其他兄弟,下面我們一起來看看jquery中DOM元素的prev、next和siblings例子,有興趣的和小編學。

jquery裡我們要取得某個元素的相鄰元素時,可以用到的指令有三個:

next():用來取得下一個同儕元素。
prev():用來取得上一個同儕元素。
siblings():用來取得所有的同儕元素。

這次我們來取得下元素的兄弟元素,包括前一個兄弟、後一個兄弟以及其他兄弟。為了簡化操作,也考慮到日常使用,我們只取元素集合中的第一個元素的兄弟元素。

1、this存取控制

$.fn._access = function(){
 if (this.length) return callback.call(this);
 else return this;
};

只在當元素集合長度大於0的時候才執行回調,否則回傳this。我們約定,下劃線開始的對方法、屬性為私有方法、私有屬性。

2、prev,前一個兄弟

/**
 * 获取当前元素的前一个兄弟元素
 * @return new this
 * @version 1.0
 * 2013年12月29日2:06:02
 */
$.fn.prev = function() {
    return this._access(function() {
        return $(this[0].previousElementSibling);
    });
};

3、next,後一個兄弟

/**
 * 获取当前元素的后一个兄弟元素
 * @return new this
 * @version 1.0
 * 2013年12月29日2:06:02
 */
$.fn.next = function() {
    return this._access(function() {
        return $(this[0].nextElementSibling);
    });
}

4、siblings,其他兄弟

#
/**
 * 获取当前元素的兄弟元素集合
 * @param {String} selector 选择器,可以为空
 * @return new this
 * @version 1.0
 * 2013年12月29日2:14:20
 */
$.fn.siblings = function(selector) {
    return this._access(function() {
        var element = this[0],
            children = element.parentElement.children,
            ret = [],
            i;
        this.each.call(children, function() {
            if (!this.isEqualNode(element)) {
                if (selector) {
                    _matchesSelector(this, selector) && ret.push(this);
                } else ret.push(this);
            }
        });
        return $(ret);
    });
};

取得元素的其他兄弟元素,有2種方法:

依序獲得元素的前一個兄弟元素陣列,然後反轉,再依序獲得元素的後一個兄弟元素;
取得元素的父級的子元素,然後遍歷一次,除去目前元素。
這裡選擇的是第2種方法,其中jquery是選擇的第1種。

範例

<!DOCTYPE html>
<html>
<head>
<style>
div,span {
  display:block;
  width:80px;
  height:80px;
  margin:5px;
  background:#bbffaa;
  float:left;
  font-size:14px;
}
div#small {
  width:60px;
  height:25px;
  font-size:12px;
  background:#fab;
}
</style>
<script src="" > </script>
</head>
<body>
<div>div (doesn&#39;t match since before #prev)</div>
<span id="prev">span#prev</span>
<div>div sibling</div>
<div>div sibling <div id="small">div niece</div > </div>
<span>span sibling (not div)</span>
<div>div sibling</div>
<script> 
//  ~ 代表id"prem"后面的div都要变 
$("#prev ~ div").css("border", "3px groove blue"); 
// + 代表id"prev"后面的第一个div要变 
$("#prev + div").css("border", "3px groove blue"); 
</script>
</body>
</html>

以上是jquery中prev、next和siblings選擇器實例展示的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn