我使用下面的代码来警告当前元素的id。
<input type="text" id="desc" name="txtTitle" onclick="fun()">jquery:
function fun () {
var currentId = $(this).attr('id');
alert(currentId);
}为什么它会警告“未定义”?我已经尝试过了:
var currentId =$('element').attr('id');
// and
alert($(this).id);
// and
alert(this.id);但它会提醒undefined
发布于 2012-01-29 22:39:35
尝试将其更改为:
<input type="text" id="desc" name="txtTitle" onclick="fun.call(this)">更好的做法是将您的事件处理程序与jQuery绑定,因为您无论如何都要使用它:
$(function() { $('#desc').click(fun); });代码不能工作的原因是您从浏览器为"onclick“属性构造的事件处理函数内部调用fun()。通过像这样调用函数,您不会提供“接收器”对象-也就是说,不会为this提供任何对象。但是,如果您使用.call()调用它,则可以显式地执行此操作。
发布于 2012-01-29 22:40:29
$(this)只能在jQuery函数内部工作;它在fun()内不引用任何内容。相反,试着这样做:
$('input#desc').click(function() {
alert($(this).attr('id'));
});使用此HTML:
<input type="text" id="desc" name="txtTitle">在HTML中使用onClick=""属性并不是很好的做法,因此使用上面给出的$.click()函数。您应该始终将您的JavaScript放在一个单独的文件中(特别是在使用jQuery时)。
发布于 2015-08-12 13:41:23
只需使用
alert($(this).attr('id'));https://stackoverflow.com/questions/9053983
复制相似问题