javascript - 使用 $(this) 将 this 传递给 jquery on() 函数
问题描述
如何将这个从函数 fun 传递到 jquery on() 函数?在 $(...).on(...) 函数中使用 this.panel。
在写这个问题的过程中,我找到了一个带有 on(..., data, ...) 的答案,但我很感兴趣是否还有其他答案,因为我花了一些时间寻找答案。另外,当我用类似的问题搜索堆栈的主题时,但我没有找到或看到类似的答案,所以我将它保存在这里以防我忘记它。
//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');
});
解决方案
一种选择是使用箭头函数,以便this
保留外部范围的上下文,并使用event.target
内部单击处理程序来获取对单击元素的引用:
$(selector).on("click", "a", (event) => {
$(event.target).addClass("w3-green");
$(this.panel).addClass("w3-red");
});
推荐阅读
- c++ - LeetCode 380:插入删除 GetRandom O(1)
- flutter - Flutter,尝试使用getter对map中的元素进行求和
- report - 如何从 Jacoco 代码覆盖率报告中排除自动生成的 Dao 并查看绑定类?
- powerbi - 显示 power bi 中的累积计数的折线图问题
- r - 为什么 dplyr::cummean(x) 不等于 cumsum(x)/seq_along(x)?
- spring - 获取项目构建错误:pom 中不可解决的父 POM 错误
- python - 为什么 Selenium 在运行 celery 任务时会出现 chrome 错误?
- python - 我想尝试编译 Chromium OS 但不是 ensure_bootstrap: command not found
- tradingview-api - Tradingview 自托管图表,未找到自定义研究错误
- python - Django save() 方法在使用相同 id 保存时用 None 填充某个字段