我想创建一个类似于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:我不是在寻找伪选择器,在此先感谢