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