JQuery:将单击事件绑定到不可单击的 HTML 元素
JQuery: Binding a click event to a non-clickable HTML element
我有多个具有同一类的div 元素。我正在尝试将单个单击事件绑定到每个事件。
<div class="tile">Tile1</div>
<div class="tile">Tile2</div>
<div class="tile">Tile3</div>
...
$(".tile").click(this.handleClick);
var handleClick = function () {
console.log("inside handle click");
};
目前,点击事件不会触发,也不会发生任何反应。如果我将单击事件绑定到窗口而不是如下所示的".tile",则单击事件可以很好地触发。
$(window).click(this.handleClick);
知道为什么我的问题是什么吗?
this
在此上下文中无法按预期工作。尝试
function handleClick() {
console.log("inside handle click");
};
$(".tile").click(handleClick);
您不需要this
关键字即可使用刚刚在同一范围内分配的变量和函数。
这在 JavaScript 中具有非常具体的含义。互联网上有很多关于这方面的文章。
这个问题可能与您对this
的使用有关。
在您的特定示例中,您将this.handleClick
绑定为处理程序,然后才将变量handleClick
定义为函数 - 这是失败的两种方式。
首先,您需要忘记使用this
,因为它不是必需的,并且可能不是指您认为它的作用。其次,要么使用函数定义,要么在使用函数声明之前移动函数声明:
$(".tile").click(handleClick);
function handleClick() { // handleClick is defined in the whole scope
console.log("inside handle click");
};
或
var handleClick = function () { // handleClick is defined from this line forward (in this scope)
console.log("inside handle click");
};
$(".tile").click(handleClick);
通过将 click 事件绑定到文档中的元素而不是元素本身来解决。
$(document).on("click", ".tile", this.handleClick);
相关文章:
- 如何通过单击html按钮获得h1的文本值
- 单击HTML展开框
- Javascript 单击html字段值而不编辑.js文件
- 提交表单的可能性(左-/中-/在新选项卡或窗口中打开-)单击html链接
- 如何在单击asp.net按钮时自动单击html按钮
- 如何通过单击HTML中的按钮关闭当前选项卡
- 如何在Windows phone 8.0应用程序的WebBrowser中自动单击html按钮
- 只想在用户单击 html 表单上的“提交”时显示绿色复选标记
- 是否有可能通过单击html页面上的按钮在我的Web服务器上运行c ++程序
- 如何显示uI-select(angularjs)时,单击html元素
- 单击 HTML 子菜单时显示
- addEventListner 在单击 HTML 之前触发
- 反应:仅在单击 html 元素时执行一次操作
- 如何通过单击 html 页面中的菜单从 jsp 调用 java 方法
- 使用 JavaScript 单击 HTML 中的链接
- 通过单击html按钮发送电子邮件
- 单击“HTML 计数器”按钮
- 原生脚本中的动态抓取?需要抓取页面,能够单击HTML按钮
- 如何检测是否单击 Html 画布的某个区域
- 通过单击HTML链接在谷歌地图上显示信息窗口