Javascript 如何在jQuery上正确重写JS函数

Javascript 如何在jQuery上正确重写JS函数,javascript,jquery,Javascript,Jquery,我正在寻找一种方法,主要是在jQuery上重写这个函数,并将var list放在函数中,以防止它在.js文件中受到污染 我对上半部分有困难,无法理解如何正确重写var并单击事件侦听器以获得预期结果 谁能帮我看看吗 var d1 = document.getElementsByClassName("div_1"); var $d2 = $(".div_2"); var i; for (i = 0; i < coll.length; i++) { d1[i].addEventList

我正在寻找一种方法,主要是在jQuery上重写这个函数,并将var list放在函数中,以防止它在.js文件中受到污染

我对上半部分有困难,无法理解如何正确重写var并单击事件侦听器以获得预期结果

谁能帮我看看吗

var d1 = document.getElementsByClassName("div_1");

var $d2 = $(".div_2");

var i;

for (i = 0; i < coll.length; i++) {
  d1[i].addEventListener("click", function() {
    this.classList.toggle("active");

    var content = this.nextElementSibling;

    if (content.style.display === "block") {
        content.style.display = "none";
    } else {
        if (this.nextElementSibling.classList.contains("test-class-name") && $d2.is(":empty")) {
          content.style.cssText = "opacity: 0; display: block;";
          // do some stuff
        } else { 
          content.style.display = "block";
        }  
    }                                  
});}
var d1=document.getElementsByClassName(“div_1”);
变量$d2=$(“.div_2”);
var i;
对于(i=0;i
//更新:(如果有帮助的话,这是我目前所能做的,并叠加在eventlistener部分)

$(.div1”)。在(“单击”,函数(){
var$ss=$(“.div2”);
var i;
对于(i=0;i
不太确定,但这应该可以做到

var d1, d2;

d1 = $(".div_1");
d2 = $(".div_2");

d1.on("click", () => {
  var node, content;

  node = $(this);
  node.toggleClass("active");
  content = node.next();

  if (content.css("display") === "block")
  {
    content.css("display", "none");
  } else {
    if (content.is(".test-class-name") && d2.is(":empty"))
    {
      content.css({ "opacity": 0, "display": "block"});
      // do some stuff
    } else { 
      content.css("display", "block");
    }  
  }
});

请发布您对jQuery的尝试。不,不要忘记jQuery的存在,它不会解决这个问题,这是一个概念性的问题,您需要了解闭包。欢迎使用合适的javascript。“将您的函数封装在另一个函数中并从闭包返回”这是我能给出的最简短的提示。@Dellium这条评论根本没有建设性。如果OP正在使用jQuery,那么他们最好继续这样做,而不是像你告诉他们的那样用普通JS编写这段特定的代码。虽然“使用jQuery”通常是错误的建议,“不要使用jQuery”如果不是更糟的话,也可能同样糟糕。@Dellirium但OP希望在jQuery中这样做,所以要求查看他们已经尝试过的内容是完全正常的。我认为删除评论比标记第一个评论人更合适。@Archer-heard。将删除我的评论。
var d1, d2;

d1 = $(".div_1");
d2 = $(".div_2");

d1.on("click", () => {
  var node, content;

  node = $(this);
  node.toggleClass("active");
  content = node.next();

  if (content.css("display") === "block")
  {
    content.css("display", "none");
  } else {
    if (content.is(".test-class-name") && d2.is(":empty"))
    {
      content.css({ "opacity": 0, "display": "block"});
      // do some stuff
    } else { 
      content.css("display", "block");
    }  
  }
});