我正在使用以下代码来提醒当前元素的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
$(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时).
尝试将其更改为:
<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 来调用它,你可以明确地这样做。
| 归档时间: |
|
| 查看次数: |
34689 次 |
| 最近记录: |