【问题标题】:How to get all elements to the right of another element如何将所有元素放在另一个元素的右侧
【发布时间】:2011-10-28 18:16:09
【问题描述】:

我有几个绝对定位的元素。是否可以获取当前元素右侧位置的所有元素?

如果是,该怎么做?

【问题讨论】:

标签: javascript jquery css-position


【解决方案1】:

我刚刚编写了一个实现此功能的插件。 小提琴:http://jsfiddle.net/FJ5Cp/1/

函数逻辑应该类似于:

  1. 获取当前元素的左侧位置和偏移宽度。将它们加在一起以获得正确的边框。
  2. 获取每个元素的左侧位置和偏移宽度,添加这些以获得右侧边框。将此值与 1 的值进行比较。

用途及作用:

// Basic usage
var allRightElements = $("element").rightOfCurrent();
// Only select ___ elements which are located right of the current element
var allRightElementsFilter = $("element").rightOfCurrent("___");
// Only select ___ elements, which are located right of the current element,
//   which are childs of ####
var allRightFilterInsideSomething = $("element").rightOfCurrent("___", "###");

(function($){
    $.fn.rightOfCurrent = function(selector, context){
        elem = this.eq(0);
        selector = selector || '*';
        context = context || null;
        var currentRight = elem.offset().left + elem.width();
        return $(selector, context).filter(function(){
           var $this = $(this);
           if ($this.css('position') == 'absolute'){
               return $this.offset().left + $this.width() > currentRight;
           }
           return false;
        });
    }
})(jQuery);

【讨论】:

  • +1 我几乎写完了一个几乎完全相同的插件 :)
【解决方案2】:

使用.filter(),将每个元素的.offset().left与当前元素的.offset().left进行比较:

var l = currentElement.offset().left;
var righterElements = positionedElements.filter(function(){
    return $(this).offset().left > l;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多