Py学习  »  Jquery

用$(this)将此传递给jquery on()函数

Maturutuki • 4 年前 • 692 次点击  

如何将它从函数fun传递到jquery on()函数? 在$(…).on(…)函数中使用this.panel。

在写这个问题的过程中,我找到了一个关于(…,data,…)的答案,但是如果还有其他答案,我很感兴趣,因为我花了一些时间寻找答案。 同样,当我用类似的问题搜索Stack的主题时,我没有找到或看到类似的答案,所以我把它保存在这里,以防忘记。

//Wrong code
function funWrong(selector) {
  this.selector = selector;
  this.panel = "#panel";

  $(selector).on("click", "a", function() {    
    $(this).addClass("w3-green"); //this is clicked link
    $(this.panel).addClass("w3-red"); //this is wrong
  });
}

//Working code:
function funOk(selector) {
  this.selector = selector;
  this.panel = "#panel";

  $(selector).on("click", "a", alias = this.panel, function() {    
    $(this).addClass("w3-green"); //this is clicked link
    $(alias).addClass("w3-red");
  });
}

//Use:
$(document).ready( function() {
  var f = new funWrong('#selector');
  var f = new funOk('#selector');
});
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38337
 
692 次点击  
文章 [ 1 ]  |  最新文章 4 年前
CertainPerformance
Reply   •   1 楼
CertainPerformance    4 年前

一种选择是使用箭头函数,以便 this 保存外部范围的上下文,并使用 event.target 在单击处理程序中获取对单击元素的引用:

$(selector).on("click", "a", (event) => {    
  $(event.target).addClass("w3-green");
  $(this.panel).addClass("w3-red");
});