ClojureScript:使用Jayq获取属性值

时间:2016-04-23 09:00:02

标签: jquery clojurescript

我想知道是否有人知道如何使用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更改为http://www.duckduckgo.com

根据我所知的jQuery(jayq所包含的内容),获取属性的值非常简单:

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

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

(1)

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

这种方法只是为了看看我是否可以从属性“链接”中获取任何内容,我确实设法将其打印到屏幕上:

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")
     )
)

我希望有人愿意通过谈论我应该如何做到这一点来指出我自己的愚蠢。

1 个答案:

答案 0 :(得分:0)

经过一段时间的搜索,我自己偶然发现了答案。使用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)
        )   
      )

这绝不是问题的最佳解决方案,但它是我此时唯一能找到的解决方案。