在下面的代码片段中我使用$(this)
引用调用该函数的元素。我知道这是不正确的,因为我打印了这些值,它给了我“未定义”。如何引用输入元素?
$(function() {
$( ".datepicker" ).datepicker({
onSelect: function (date, obj){
if(confirm('Is this correct?: '+ date )) {
$.post('edit.php', {
"row": $(this).data('id'),
"date":date,
"field":$(this).name,
"ajax":'true'
});
}
}
});
});
这是 html 元素:
<input
name="appvAcadVp"
data-id="someid"
class="datepicker" size="10"
type="text"
placeholder="someholder"
>
jQuery 集this
本身,通常指向当前元素。
否则,在 JavaScript 中...
作为分配给属性的函数
var a = {
b: function() {
// `this` is `a`
}
}
a.b();
Except,其中属性被分配给变量。观察...
var c = a.b;
c(); // the `this` will point to `window`
作为分配给变量的函数
var a = function() {
// `this` is `window`
}
a();
作为建造者
var C = function() {
// `this` is `c`
}
var c = new C();
请注意,如果您忘记实例化new
,JavaScript 会将这些属性分配给全局对象(window
在浏览器中)。
在全球范围内
// In global scope `this` is `window`
var d = this;
正如所调用的call()
or apply()
您还可以设置this
明确地与call()
and apply()
函数方法。
现在,针对你的问题...
感谢您对“this”的解释,但我仍然不明白为什么该引用在我的代码中不起作用
我很抱歉。
$(this).name
不会像this
现在是一个 jQuery 对象,并且只有几个属性(其中没有一个是name
).
要么使用$(this).attr('name')
或滴包装this
使用 jQuery 对象并访问this.name
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)