ClojureScript:使用 Jayq 获取属性值

ClojureScript: Using Jayq to get value of attribute

我想知道是否有人知道如何在 ClojureScript 中使用 jayq 从网页 HTML 获取属性值。

到目前为止我已经这样做了:

(ns jquerytest.core)

(def jquery (js* "$"))
 (jquery
     (fn []
         (-> (jquery "#w3s")
             (.attr "href" "http://www.duckduckgo.com")
         )
     )
 )

这段代码做了它应该做的,并将属性 "w3s" 中的 "href" 值从 http://www.google.com to http://www.duckduckgo.com 更改为 "href"。

根据我对 jQuery 的了解(jayq 被环绕),获取属性值非常简单:

var hyref = $(this).attr('href');
alert(hyref);

所以,我一直在尝试在我的 clojurescript 中模拟类似的行为(但只是写入屏幕等)。这是一组两个示例尝试:

(1)

(defn attr-link [] 
     (doto (jquery ".link") 
           (.html) 
           (println)
     )
)

这个方法只是为了看看我是否可以从属性 "link" 中得到任何东西,我确实设法将它打印到屏幕上:

function jquerytest$core$y(){ var G__6988 = jquerytest.core.jquery.call(null,".link"); G__6988.html(); cljs.core.println.call(null,G__6988); return G__6988; } 

(2)

(defn getVal [] 
     (-> (jquery "#w3s")
         (.attr "href")
     )
)

我希望有人愿意通过告诉我应该如何真正去做这件事来指出我自己的愚蠢。

所以经过一段时间的搜索,我自己偶然发现了答案。使用 Dommy 库(我的代码中的 dom)我设法检索了 "a" 标签的 href 值。

  (ns hello-world.core
  (:require [clojure.browser.repl :as repl] [dommy.core :as dom])
      (defn get-link-value 
        []
        (println (-> (dom/sel1 "#w3s")
          (dom/attr :href)
        )   
      )

这绝不可能是解决问题的最佳方法,但这是我目前设法找到的唯一方法。