$('#myElement').datepicker(
{
dateFormat: 'yy-mm-dd',
onClose: function() {
$(this).DoStuff;
console.log('close');
},
beforeShowDay: nationalDays,
minDate: new Date()
}
);
function DoStuff() {
console.log('DoStuff');
}
我正在尝试在datepicker关闭时调用DoStuff。我的控制台显示“关闭”,但不显示“DoStuff”。我做错了什么?
答案 0 :(得分:3)
$(this).DoStuff
不会调用DoStuff
对象上的$(this)
函数,但会尝试访问DoStuff
对象的$(this)
属性。在你的情况下它将什么都不做:它将被解析为未定义,并且访问一个属性很可能没有副作用,什么都不会发生。
由于你的问题非常基本,我很确定存在误解,但这就是你如何调用DoStuff
函数:
DoStuff();
所以这就足够了:
$('#myElement').datepicker(
{
dateFormat: 'yy-mm-dd',
onClose: function() {
DoStuff();
console.log('close');
},
beforeShowDay: nationalDays,
minDate: new Date()
}
);
修改强>:
实际上如果你想在jQuery对象上调用一个函数(虽然我不确定你真的想这样做),你可以像这样扩展对象:
jQuery.fn.DoStuff = function() {
console.log('DoStuff');
}
然后您就可以致电$(this).DoStuff()
了。这样this
将成为函数内的jQuery对象,请检查:
jQuery.fn.DoStuff = function() {
console.log(this);
console.log(this[0]); //the first (and in this case the only) element selected by the selector
}
$('#myElement').DoStuff();
答案 1 :(得分:1)
嗯,你不是在说它
$(this).DoStuff; <-- missing the ()
并且DoStuff
未附加到$(this)
,因此它也无效,我希望看到您的代码所没有的扩展。
所以它应该是
DoStuff();
或
DoStuff.call($(this));
答案 2 :(得分:1)
$(this).DoStuff()
暗示DoStuff()
是对象的成员函数,但似乎并非如此。
您应该改为doStuff($(this));
并修改doStuff()
以接受参数。
function doStuff(el) {
console.log('DoStuff called. Received element:');
console.log(e);
}