Добавлено сюда для потомков.Решение, которое я выбрал, заключалось в том, чтобы переопределить корневой объект jquery с помощью небольшого количества специального кода синтаксического анализа.Примерно так:
(function() {
var rootjq = window.jQuery;
var myjq = function(selector, context) {
if(selector.indexOf("::contents") === -1) {
return rootjq(selector, context);
} else {
var split = selector.split("::contents");
var ifrm = split[0];
var subsel = split.splice(1).join("::contents");
var contents = rootjq(ifrm, context).contents();
// Recursive call to support multiple ::contents in a query
return myjq(subsel, contents);
}
};
myjq.prototype = myjq.fn = rootjq.fn;
window.jQuery = window.$ = myjq;
})();
Обратите внимание, что двойное двоеточие (::
) в css означает выбор псевдоэлемента , в то время как одиночное двоеточие означает выбор по псевдоклассу.