jq解绑元素

该代码示例展示了如何使用JavaScript和jQuery解除通过ID、class和data-click属性绑定的点击事件。它遍历li元素,检查元素的ID、class和data-click属性,然后解除对应的事件绑定并移除相关属性。
摘要由CSDN通过智能技术生成
import $ from "./jquery.js";

// 需要存放的 data-click 数组

const deleteClickAttribute = [
  "click1",
  "click2",
  "click3",
  "click4",
  "click5",
  "click6",
  "click7",
  "click8",
  "click8",
];
// 通过ID绑定的数组
const deleteClickIds = ["id1", "id3", "id2"];
//通过class绑定的数组
const deleteClickClasss = ["class1", "class2"];
const liEles = document.getElementsByTagName("li");
// 模拟添加事件
let el = document.getElementById("id1");
$("#id1").on("click", () => {
  console.log(123);
});
el.onclick = () => {
  console.log(123);
};
const unbind = ({ byAttributes, byIds, byClasss, unbindEles }) => {
  // isOutermostlayer 是否为最外层
  function recurrence(unbindEles, isOutermostlayer) {
    let needReturn = false;
    for (const el of unbindEles) {
      if (needReturn) {
        return;
      }
      //  判断id 是否存在于id数组
      if (byIds.includes(el.id)) {
        $(el).unbind("click");
        $(el).removeAttr("click");
        el.onclick = null;
        //  最外层中断循环 里层中断递归且中断循环
        if (isOutermostlayer) {
          continue;
        }
        needReturn = true;
        continue;
      }
      const classList = el.classList;
      if (classList.length) {
        const mixedClass = byClasss.find((classItem) =>
          classList.contains(classItem)
        );
        if (mixedClass) {
          $(el).unbind("click");
          $(el).removeAttr("click");
          el.onclick = null;
          //  最外层中断循环 里层中断递归且中断循环
          if (isOutermostlayer) {
            continue;
          }
          needReturn = true;
          continue;
        }
      }
      const dataClick = el.getAttribute("data-click");
      if (byAttributes.includes(dataClick)) {
        $(el).unbind("click");
        $(el).removeAttr("click");
        el.onclick = null;
        //  最外层中断循环 里层中断递归且中断循环
        if (isOutermostlayer) {
          continue;
        }
        needReturn = true;
        continue;
      }
      if (el.children.length > 0) {
        recurrence(el.children);
      }
    }
  }
    recurrence(unbindEles, true);
};
unbind({
  byAttributes: deleteClickAttribute,
  byIds: deleteClickIds,
  byClasss: deleteClickClasss,
  unbindEles: liEles,
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值