首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当前元素的预警ID

当前元素的预警ID
EN

Stack Overflow用户
提问于 2012-01-29 22:37:59
回答 6查看 39.2K关注 0票数 5

我使用下面的代码来警告当前元素的id。

代码语言:javascript
复制
<input type="text" id="desc" name="txtTitle" onclick="fun()">

jquery:

代码语言:javascript
复制
function fun () {
    var currentId = $(this).attr('id');
    alert(currentId);
}

为什么它会警告“未定义”?我已经尝试过了:

代码语言:javascript
复制
var currentId =$('element').attr('id'); 
// and 
alert($(this).id); 
// and 
alert(this.id);

但它会提醒undefined

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-01-29 22:39:35

尝试将其更改为:

代码语言:javascript
复制
<input type="text" id="desc" name="txtTitle" onclick="fun.call(this)">

更好的做法是将您的事件处理程序与jQuery绑定,因为您无论如何都要使用它:

代码语言:javascript
复制
$(function() { $('#desc').click(fun); });

代码不能工作的原因是您从浏览器为"onclick“属性构造的事件处理函数内部调用fun()。通过像这样调用函数,您不会提供“接收器”对象-也就是说,不会为this提供任何对象。但是,如果您使用.call()调用它,则可以显式地执行此操作。

票数 4
EN

Stack Overflow用户

发布于 2012-01-29 22:40:29

$(this)只能在jQuery函数内部工作;它在fun()内不引用任何内容。相反,试着这样做:

代码语言:javascript
复制
$('input#desc').click(function() {
    alert($(this).attr('id'));
});

使用此HTML:

代码语言:javascript
复制
<input type="text" id="desc" name="txtTitle">

在HTML中使用onClick=""属性并不是很好的做法,因此使用上面给出的$.click()函数。您应该始终将您的JavaScript放在一个单独的文件中(特别是在使用jQuery时)。

票数 9
EN

Stack Overflow用户

发布于 2015-08-12 13:41:23

只需使用

代码语言:javascript
复制
alert($(this).attr('id'));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9053983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档