Как выбрать элементы на основе координат ху, не используя перетаскивание мышью, с помощью jquery? - PullRequest
2 голосов
/ 10 декабря 2011

Как выбрать элементы на основе координат XY, а не с помощью перетаскивания мышью с помощью jquery?enter image description here

1 Ответ

3 голосов
/ 10 декабря 2011

Плагин jQuery, как показано ниже, будет выбирать все элементы, которые (частично) находятся в положении> = x и> = y.

(function($){
    $.fn.filterXY = function(x, y){
        return this.filter(function(){
            var $this = $(this),
                offset = $this.offset(),
                width = $this.width(),
                height = $this.height();
            return offset.left + width >= x
                && offset.top + height >= y;
        });
    }
})(jQuery);

Примеры:

$("*").filterXY(0,0);
$("div").filterXY(100, 0);

<час />

Обновление: плагин для фильтрации всех элементов между x1 и x2

Демо: http://jsfiddle.net/yx4sN/7/

(function($){
    $.fn.inRangeX = function(x1, x2){
        // Accepting selectors and DOM elements
        if (typeof x1 == "string" && +x1 != x1 || x1 instanceof Element) {
            x1 = $(x1);
        }
        if (typeof x2 == "string" && +x1 != x1 || x1 instanceof Element) {
            x2 = $(x2);
        }
        // Accepting jQuery objects
        if (x1 instanceof $) {
            x1 = x1.offset().left;
        }
        if (x2 instanceof $) {
            x2 = x2.offset().left;
        }
        x1 = +x1;
        x2 = +x2;

        // Make sure that x1 < x2
        if (x1 > x2) {
            var x = x1;
            x1 = x2;
            x2 = x;
        }
        return this.filter(function(){
            var $this = $(this),
                offset = $this.offset(),
                rightSide = $this.width() + offset.left;
            return offset.left >= x1
                  && rightSide <= x2;
        });
    }
})(jQuery);
...