Как проверить DOM .contains? в кложурскрипте?

В JS выполняется document.some_element.contains(other_element), чтобы узнать, содержится ли элемент внутри другого.

Как это сделать в среде Clojurescript/Hiccup/Reagent?

Я пытался:

(js/contains some-element another-element)
(-> js/contains some-element another-element)
(.-contains some-element another-element)
(js/.contains some-element another-element)

person zengod    schedule 22.02.2020    source источник
comment
Что вы пробовали? CLJS компилируется в JS, поэтому то, что работает там, должно работать и здесь.   -  person cfrick    schedule 22.02.2020
comment
Конечно, да, но каков синтаксис?   -  person zengod    schedule 22.02.2020


Ответы (1)


Правильный синтаксис для вызова метода объекта — (.contains a b), который будет равен a.contains(b). Пространство имен js/ зарезервировано для доступа к "глобальной" области и поэтому не может использоваться с локальными.

(.contains a b) также может быть записано как (. a (contains b)), что на самом деле является тем, до чего .contains расширяется после того, как компилятор закончит с ним.

Существует также .., который позволяет связывать формы взаимодействия, поэтому (.. js/document -some-element (contains another-element)) будет соответствовать document.some_element.contains(another_element). Обратите внимание, что js/document здесь обращается к глобальному документу.

-> также можно использовать, если требуется повторить ., например (-> js/document .-some-element (.contains another-element)).

person Thomas Heller    schedule 22.02.2020
comment
Спасибо. Какой источник? - person zengod; 23.02.2020
comment
@zengod — раздел JS Interop шпаргалки CLJS является хорошей отправной точкой: cljs.info/cheatsheet а также cljs.github.io/api/syntax/#dot - person Denis Fuenzalida; 23.02.2020