Ну, из коробки jQuery не поддерживает выбор узлов внутри веб-компонентов. (возможно, потому, что document.querySelector()
не работает для теневого DOM (и он не должен, по определению)).jQuery selection in polymer webcomponent
Наша предыдущая кодовая база несколько зависела от jQuery, и многие из разработчиков не хотят отпустить простоту выбора $(...)
. Итак, я завернул этот быстрый и грязный трюк.
window.$$ = function (that, selector) {
return $(that.shadowRoot.querySelectorAll(selector));
}
Использование (внутри пожизненной обратного вызова или всякий раз, когда host
узел может быть доступен):
jqel = $$(this, '.myClass'); // this has reference to the host
Вопрос в том, есть ли лучший способ пойти по этому поводу?
Благодарим за обновление. возможно, вы могли бы использовать псевдоним '.shadow()' для метода '.getShadowRoot()', чтобы лучше отражать философию jquery. (т. е. '.parent()' вместо '.getParent()') –
привет @Sayerm, я думаю, вы правы, я думаю, что изменю его на shadow() –