2012-04-27 106 views
0

当我点击我的它应该像下面的图片。x和y位置。扫雷式

enter image description here

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

enter image description here

我提出的例子(参见下面的小提琴)。正如你在图片中看到的,我目前的问题是:

所有上面和下面(不仅是第一行)也在改变。

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

Here is my fiddle.

我聚集在这两个职位信息。

+1

什么是你的问题?你卡在哪里? – 2012-04-27 02:40:04

+1

左键+右键同时不是最好的设计理念。例如,Mac笔记本电脑用户在这方面会遇到很多困难,我相信还有很多其他人会分担困难。 – rid 2012-04-27 02:41:46

+0

感谢您的回复,抱歉,如果我可以表达我所希望的。正如我试图说@MichaelPetrotta我只需要点击附近的近divs。但目前我得到的是我的点击之上的所有div(不仅是第一行)和所有div(不仅是第一行) – 2012-04-27 02:42:08

回答

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); 
} 

working example

UPDATE:

嗯,你可以选择所有的人都像这样:

$.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'); 
    }); 

}); 
+0

感谢您的回复。我检查了你的例子,这就是我正在寻找的。 – 2012-04-27 13:16:50

+0

也许更新会有所帮助 – Vytautas 2012-04-27 13:34:56

+0

真的非常感谢你的补充,我已经删除了额外的评论问题,因为它不是原始问题的一部分,我对此有点滥用。但非常感谢补充=) – 2012-04-27 13:42:48