0

当我用单击时,它应该如下图所示。

在此处输入图像描述

但相反,我的代码正在这样做。

在此处输入图像描述

我做了一个例子(见下面的小提琴)。正如您在图像中看到的,我目前的问题是:

上面和下面的所有内容(不仅是第一行)也在变化。

在我的小提琴示例中,我正在使用.css('background-color', 'red')它来测试它。

这是我的小提琴。

我在这两个帖子中收集了信息。

4

1 回答 1

1

不知道你想要什么,但试试这个:

$.expr[':'].xy = function (obj, index, meta, stack) {
    var xy = meta[3].split(',');
    var x = xy[0];
    var y = xy[1];
    var el = $(obj);
    var el_offset = el.offset();
    return el_offset.left == y && (el_offset.top-el.height() == x || el_offset.top+el.height() == x);
}

工作示例

更新:

嗯,您可以像这样选择所有这些:

$.expr[':'].xy = function (obj, index, meta, stack) {
    var xy = meta[3].split(',');
    var y = xy[0];
    var x = xy[1];
    var el = $(obj);
    var el_offset = el.offset();
    // check for top and bottom 3 blocks
    if ((el_offset.top-el.height() == y || el_offset.top+el.height() == y) &&  (el_offset.left+el.width() == x || el_offset.left == x || el_offset.left-el.width() == x))
        return true;
    // left and right
    else if (el_offset.top == y && (el_offset.left+el.width() == x || el_offset.left-el.width() == x))
        return true;

    return false;
}

然后这样做:

$(document).ready(function myfunction() {

    $('.content').on("click", function () {
        var obj_left = $(this).offset().left;
        var obj_top = $(this).offset().top;

        $('#wrap').find('.content:xy(' + obj_top + ',' + obj_left + ')').css('background-color', 'red');
    });

});
于 2012-04-27T13:06:11.250 回答