当前元素的警报ID

dyn*_*nid 5 jquery

我正在使用以下代码来提醒当前元素的id.

<input type="text" id="desc" name="txtTitle" onclick="fun()">
Run Code Online (Sandbox Code Playgroud)

jQuery的:

function fun () {
    var currentId = $(this).attr('id');
    alert(currentId);
}
Run Code Online (Sandbox Code Playgroud)

为什么警告"未定义"?我尝试过:

var currentId =$('element').attr('id'); 
// and 
alert($(this).id); 
// and 
alert(this.id);
Run Code Online (Sandbox Code Playgroud)

但它提醒 undefined

Boj*_*les 9

$(this)只适用于jQuery函数; 它里面没有任何内容fun().相反,试试这个:

$('input#desc').click(function() {
    alert($(this).attr('id'));
});
Run Code Online (Sandbox Code Playgroud)

使用此HTML:

<input type="text" id="desc" name="txtTitle">
Run Code Online (Sandbox Code Playgroud)

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


Poi*_*nty 4

尝试将其更改为:

<input type="text" id="desc" name="txtTitle" onclick="fun.call(this)">
Run Code Online (Sandbox Code Playgroud)

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

$(function() { $('#desc').click(fun); });
Run Code Online (Sandbox Code Playgroud)

您的代码不起作用的原因是您fun()从浏览器为“onclick”属性构造的事件处理函数内部调用。通过像这样调用函数,您不会提供任何“接收者”对象——this也就是说,什么也没有。如果你用.call()then 来调用它,你可以明确地这样做。