По крайней мере, вплоть до CSS3, включая CSS3, вы не можете выбрать это. Но это может быть сделано довольно легко в настоящее время в JS, вам просто нужно добавить немного ванильного JavaScript, обратите внимание, что код довольно короткий.
cells = document.querySelectorAll('div');
[].forEach.call(cells, function (el) {
//console.log(el.nodeName)
if (el.hasChildNodes() && el.firstChild.nodeName=="A") {
console.log(el)};
});
<div>Peter</div>
<div><a href="#">Jackson link</a></div>
<div>Philip</div>
<div><a href="#">Pullman link</a></div>
Первое, на что нужно обратить внимание, это то, что аноним namespace
не совпадает с namespace
.
namespace
{
bool operator==(const Foo&, const Foo&) {...}
}
- это действительно что-то вроде
namespace ANameUniqueToTheFile
{
bool operator==(const Foo&, const Foo&) {...}
}
using ANameUniqueToTheFile;
с тем недостатком, что язык не дает вам возможности получить имя namespace
.
По этой причине, функция operator==
, определенная в анонимном namespace
, не найдена с использованием ADL.
Я понимаю, почему вы хотите поместить функцию operator==
в namespace
. Один из возможных способов сделать это - файл #include
.h, который определяет struct
внутри именованного namespace
.
FooWrapper.h:
namespace MyApp
{
#include "foo.h"
// Declare the function.
bool operator==(Foo const& lhs, Foo const& rhs);
}
FooWrapper.cpp
#include "FooWrapper.h"
namespace MyApp
{
// Implement the function.
bool operator==(Foo const& lhs, Foo const& rhs) { ... }
}
Я понимаю, что немного упрощаю то, что в "foo.h". Добавление всех из них в namesapce MyApp
может быть неуместным, особенно если «foo.h» включает в себя другие файлы .h и / или стандартные заголовочные файлы. Я надеюсь, что это даст вам некоторые идеи о том, как решить проблему.
Если поместить все «foo.h» в namespace MyApp
не гладко, вероятно, будет целесообразно определить функцию operato==
в глобальной области видимости.
Я думаю, вы обнаружите, что std::vector
на самом деле действительно находит оператор в анонимном пространстве имен, если объявление этого оператора происходит до #include <vector>
.
Причина, по которой он не находит его в вашем коде, связана с двухфазным поиском имен в функциях шаблона. Первый этап находит кандидатов во всех пространствах имен в области видимости. Второй этап находит только зависимые имена. «Поиск, зависящий от аргумента», который ищет пространство имен, содержащее тип, зависит от фразы. Поиск в анонимном пространстве имен не зависит, поэтому он не будет выполнен на втором этапе.
См. Также: