0


我想创建一个类似于Basic CSS Selectors的自定义选择器,而不像那些以冒号开头的伪选择器(使用创建$.expr[':'])。
这是将document.elementFromPoint方法合并到 jquery 中。
我为此编写了如下代码:

$._find = $.find;
$.find = function(query, context, extra, seed ){
    var start,end,expr,_ref,top,left;
    if(typeof query === 'string'){
        start = query.indexOf("(");
        end = query.indexOf(")",start);
        if(start !== -1 && end !== -1){
            expr = "["+query.slice(start+1,end)+"]";
            _ref = $.parseJSON(expr);top=_ref[0];left=_ref[1];
            console.log(document.elementFromPoint(top,left));
            return $([document.elementFromPoint(top,left)]);
        }
    }
    return $._find.apply(null,[query, context, extra, seed]);
};

它适用于普通查询。但是当$('(10,20)')执行代码时,会返回一个空的 jquery 结果。
问题发生在这一行return $([document.elementFromPoint(top,left)]);,因为前一行恰好给出了一个有效的 DOM 元素。

欢迎任何评论。

PS:我不是在寻找伪选择器,在此先感谢

4

0 回答 0