For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /note/js/zepto-event.md.

Zepto 事件

一、Zepto Event 事件函数

1、$.Event(type,[properties])

代码示例
// 创建并初始化一个指定的DOM事件
$.Event("mylib:change", {
    bubbles: false,
});

2、$proxy(fn,context)

代码示例
// 创建并初始化一个指定的DOM事件
let obj = {
        name: "Zepto",
    },
    handler = function () {
        console.log("hello Zepto ", this.name);
    };
$(document).on("click", $.proxy(handler, obj));

注:该方法接收一个函数,然后返回一个新函数,并且该新函数始终保持特定的上下文语境,新函数中的this指向context参数。

2、bind():绑定事件函数

代码示例
$("#app").bind("click", function (e) {
    alert("bind方法");
});

3、delegate():绑定事件函数

代码示例
$("#app").delegate("button", "click", function (e) {
    alert("delegate方法,推荐使用on绑定事件!");
});

4、off():移除通过 on 添加的事件

代码示例
$("#app").off("click", [Element], function (e) {
    alert("移除on绑定的事件!");
});

5、on():添加一个处理事件到元素

代码示例
var elem = $("#content");

elem.on("click", function (e) {});

elem.on("click", "nav a", function (e) {});

$(document).on("click", "a", function (e) {});

6、one():添加一次点击事件

代码示例
$("#btn").one("click", "a", function (e) {});

注:当第一次执行事件以后,该事件自动解除绑定,保证该处理函数在每个元素上最多执行一次。

7、trigger(event, [args]):在对象集合的元素上触发指定的事件

代码示例
// input上的focus事件触发,input获取焦点
$("input").trigger("focus");

8、triggerHandler(event, [args])

代码示例
// input上的focus事件触发,但是input不会获取焦点
$("input").triggerHandler("focus");

9、unbind():移除通过 bind 注册的事件

代码示例
// input上的focus事件触发,但是input不会获取焦点
$("#app").unbind("click", function (e) {});

二、DOM 节点&方法

1、reduce():遍历当前对象集合

代码示例
reduce(function (memo, index, array) {}, [initial]);

2、remove():从其父节点中删除当前集合中的元素

代码示例
$("#app div").remove();

3、removeAttr(name):移除含有 name 的指定元素

代码示例
$("#app div").removeAttr(".aaa");

4、removeClass([name]):移除元素 Class

代码示例
$("#app div").removeClass("xc");

5、replaceWith():用给定的内容替换所有匹配的元素

代码示例
$("#app").replaceWith("abcd");

6、scrollLeft():获取或设置页面上的滚动元素或者整个窗口向右滚动的像素值

代码示例
$("#app").scrollLeft();

7、scrollTop():获取或设置页面上的滚动元素或者整个窗口向下滚动的像素值

代码示例
$("#app").scrollTop();

8、show():恢复对象集合中每个元素默认的“display”值

代码示例
$("#app").show();

9、siblings():获取对象集合中所有元素的兄弟节点

代码示例
$("#app").siblings();

10、size():获取对象集合中元素的数量

代码示例
$("ul li").size();

11、slice(start,[end]):用给定的内容替换所有匹配的元素

代码示例
var a11 = [1, 2, 3, 4, 5, 6, 7, 8];
var a_4 = a11.slice(4);
console.log(a_4);

注:提取这个数组array的子集,从start开始,如果给定end,提取从从start开始到end结束的元素,但是不包含end位置的元素。

12、text():获取或者设置所有对象集合中元素的文本内容

代码示例
// 获取文本
$("ul li").eq(0).text();

// 设置文本
$("ul li").eq(0).text("设置文本内容");

13、toggle():显示或隐藏匹配元素

代码示例
$("#box").toggle(true); // true => show false=> hide

14、toggleClass():在匹配的元素集合中的每个元素上添加或删除一个或多个样式类

代码示例
$("#box").toggleClass("bt");

15、unwrap():移除集合中每个元素的直接父节点,并把他们的子元素保留在原来的位置

代码示例
$("ul li").unwrap();

16、val():获取或设置匹配元素的值

代码示例
// 获取元素值
$("input").val();

// 设置元素值
$("input").val("姓名");

17、wrap():在每个匹配的元素外层包上一个 html 元素

代码示例
$("span").wrap("p");

18、wrapAll():在所有匹配元素外面包一个单独的结构

代码示例
$("ul li").wrapAll("div");

19、wrapInner():将每个元素中的内容包裹在一个单独的结构中

代码示例
$("ul li").wrapInner("div");

20、width():获取或者设置元素对象的宽度

代码示例
// 获取id为app元素的宽度
$("#app").width();

// 为元素设置宽度
$("#app").width(100);

三、Ajax 请求

1、$.ajax()

代码示例
// GET请求
$.ajax({
    type: "GET",
    url: "url",
    data: {
        name: "xxx",
    },
    dataType: "json",
    timeout: 300,
    context: $("body"),
    success: function (data) {},
    error: function (xhr, type) {},
});

// POST 请求:需要通过JSON.stringify()将参数转化为JSON字符串
$.ajax({
    type: "POST",
    url: "url",
    data: JSON.stringify({
        name: "xxx",
    }),
    success: function (data) {},
    error: function (xhr, type) {},
});
注意事项
  1. beforeSend(xhr, settings):请求发出前调用,它接收 xhr 对象和 settings 作为参数对象。如果它返回 false,请求将被取消。
  2. success(data, status, xhr):请求成功之后调用。传入返回后的数据,以及包含成功代码的字符串。
  3. error(xhr, errorType, error):请求出错时调用。 (超时,解析错误,或者状态码不在 HTTP 2xx)。
  4. complete(xhr, status):请求完成时调用,无论请求失败或成功。

2、$.get():Ajax GET 请求

代码示例
$.get(
    "url",
    function (response) {
        $(document.body).append(response);
    },
    [dataType]
);

3、$.post():Ajax POST 请求

代码示例
// POST请求简写方式
$.post(
    "/url",
    {
        sample: "xxx",
    },
    function (response) {
        console.log(response);
    }
);

// 参数可以为一个字符串
$.post("url", $("#app").serialize(), function (response) {
    console.log(response);
});

4、$.getJSON()

代码示例
$.getJSON("xxx.json", function (data) {
    console.log(data);
});

// callback()回调函数
$.getJSON("xxx.json?callback=?", function (remoteData) {
    console.log(remoteData);
});