1 Star 4 Fork 1

Rezero / ramda-jq

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

简介

ramda-jq 是把 jquery 转换为函数流风格 符合 ramda.js 的js库(对js的FP感兴趣的可以加群426566496一起讨论) 我只转换了一些常用函数 on,hide,show... 如果没有你需要的函数可以修改源码(转换类似 var hover = fntor2("hover"); 给出名字和参数个数就行俩) 随时提交pull request

初始化

引入依赖

<script src="http://lib.sinaapp.com/js/jquery/1.7.2/jquery.min.js"></script>
<script src="http://cdn.jsdelivr.net/ramda/latest/ramda.min.js"></script>
<script src="../src/ramda-jq.js"></script>

接下来就可以直接使用了

var data = {
    msg: ["000000000", "1111111111"]
};
var pipe = R.pipe,
    split = R.split,
    jqpipe = ui.jqpipe;
var watch = pipe(
    ui.on("click", jqpipe(ui.attr("title"), R.concat("hello "), alert)),//点击触发:弹窗 hello+标题
    pipe(ui.find("[hover-up]"), ui.hoverToogle500(ui.find("[hover]"))),//鼠标划过hover-up显示或者隐藏hover 延迟500毫秒
    pipe(ui.find("[msg-path]"), ui.on("click", jqpipe(ui.attr("msg-path"), R.split("."), R.path(R.__, data), alert)))
);
watch($(document));

为什么使用函数流 而不是jq的链式 why

  1. jq的链式 必须继承jq里面返回this 而且按照规范还得是跟dom相关 这既麻烦又不方便
  2. 相比较函数流就好多了任何函数都可以组合进去(比如上面的 alert )近乎于完美
  3. 写代码像是在写配置 功能一目了然 函数名字充当dsl

两个核心函数

ui.jq

等同于下面代码

function jq(fn) {
    return function(e) {
        return fn($(this), e);
    };
}

ui,jqpipe

等同于下面代码

function jqpipe() {
    return jq(r.pipe.apply(null, arguments));
}

一览表

api isJquery isAdded
on y n
once y n
jq n y
jqpipe n y
addclass y n
removeClass y n
attr y n
setArrt y y
hover y n
attrs n y
hoverUp n y
hoverToogle n y

空文件

简介

把 =jquery= 转换为函数流风格 符合 =ramda.js= 的哲学的js库 展开 收起
JavaScript
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
JavaScript
1
https://gitee.com/diqye/ramda-jq.git
git@gitee.com:diqye/ramda-jq.git
diqye
ramda-jq
ramda-jq
master

搜索帮助