【发布时间】:2011-10-28 18:16:09
【问题描述】:
我有几个绝对定位的元素。是否可以获取当前元素右侧位置的所有元素?
如果是,该怎么做?
【问题讨论】:
-
你应该可以通过
.position():api.jquery.com/position和.offset():api.jquery.com/offset来做到这一点
标签: javascript jquery css-position
我有几个绝对定位的元素。是否可以获取当前元素右侧位置的所有元素?
如果是,该怎么做?
【问题讨论】:
.position():api.jquery.com/position和.offset():api.jquery.com/offset来做到这一点
标签: javascript jquery css-position
我刚刚编写了一个实现此功能的插件。 小提琴:http://jsfiddle.net/FJ5Cp/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);
【讨论】:
使用.filter(),将每个元素的.offset().left与当前元素的.offset().left进行比较:
var l = currentElement.offset().left;
var righterElements = positionedElements.filter(function(){
return $(this).offset().left > l;
});
【讨论】: