首先,请注意id
以数字开头的属性在 HTML4 中在语法上是非法的。如果您正在使用id="10"
确保您使用的是 HTML5 文档类型 (<!DOCTYPE html>
).
在没有看到实际代码的情况下,很难说为什么你所做的事情不起作用。大概是因为您在更高的元素(如正文)上注册了该事件并且this.id
是id
那个更高的元素而不是您单击的元素。
在这种情况下,您想要使用target
事件的属性来查找您点击的内容。例如:
$(document.body).click(function(evt){
var clicked = evt.target;
var currentID = clicked.id || "No ID!";
$(clicked).html(currentID);
})
在行动中看到:http://jsfiddle.net/Gra2P/ http://jsfiddle.net/Gra2P/
如果您是在特定元素上注册,那么this.id
does work:
$('div').click(function(evt){
var currentID = this.id || "No ID!";
$(this).html(currentID);
})
在行动中看到:http://jsfiddle.net/Gra2P/1/ http://jsfiddle.net/Gra2P/1/
然而,这是次理想的,因为:
- 它注册了许多事件处理程序而不是 1 个,并且
- 如果在运行此代码后向文档添加其他 div,则不会对其进行处理。
在 jQuery 1.7 下,您可以使用.on
方法在父元素上创建单个事件处理程序,其中包含要捕获事件的元素类型的选择器,并且具有this
设置给他们。在代码中:
$(document.body).on('click','div',function(evt){
var currentID = this.id || "No ID!";
$(this).html(currentID);
})
在行动中看到:http://jsfiddle.net/Gra2P/2/ http://jsfiddle.net/Gra2P/2/