Javascript 在自定义jQuery类中使用keyup函数
我有一个自定义的jQuery类来创建弹出列表,但是当我将HTML元素传递给类对象时,Javascript 在自定义jQuery类中使用keyup函数,javascript,jquery,dom,Javascript,Jquery,Dom,我有一个自定义的jQuery类来创建弹出列表,但是当我将HTML元素传递给类对象时,是未定义的 我想将元素发送到类中,并为此设置.keyup()事件,并在.keyup()函数中操作元素值 我的代码是: $.Class('kpopup', { // static init: function (e, p, h, r, u) { url = u; hostElement = e; popupElement = p; po
是未定义的
我想将元素发送到类中,并为此设置.keyup()
事件,并在.keyup()
函数中操作元素值
我的代码是:
$.Class('kpopup', {
// static
init: function (e, p, h, r, u) {
url = u;
hostElement = e;
popupElement = p;
popupResult = r;
hiddenElement = h;
$(hostElement).keyup(function () {
$.ajax({
url: url,
data: { "value": $(hostElement).val() },
type: 'POST',
success: function (dt) {
if (dt != "") {
$(popupResult).html(dt);
$(hostElement).popupDiv($(popupElement));
} else {
$(popupElement).hide();
}
}
});
});
}
},
//Prototypes
{});
使用上述类别的代码:
$(document).ready(function () {
var kpopup = new kpopup(
$("#clas_academy_id"),
$(".popup-picker"),
$("#clas_academy_id_hidden"),
$("#popup-result"),
'@Url.Action("searchAcademies","Academy")'
);
});
也许你可以试试,在chrome中按F12或在Firefox中按control+shift+k打开控制台并检查输出。您可以单击一些console.log输出来检查记录的对象的值
Kpopup = function(e, p, h, r, u) {
console.log("creating Kpopup with parameters:", e, p, h, r, u);
this.url = u;
this.hostElement = e;
this.popupElement = p;
tis.popupResult = r;
this.hiddenElement = h;
this.init();
};
Kpopup.prototype.init = function() {
console.log("And this is:", this);
console.log("And this hostElement is:", this.hostElement);
var pResult = this.popupResult;
var hElement = this.hostElement;
var pElement = this.popupElement;
this.hostElement.keyup(function() {
$.ajax({
url: this.url,
data: {"value": hElement.val()},
type: 'POST',
success: function(dt) {
if (dt !== "") {
pResult.html(dt);
hElement.popupDiv(pElement);
} else {
pElement.hide();
}
}
});
});
};
请注意,我将您的kpoup对象大写,因为这是构造函数的常用符号,因此您的文档准备就绪,您也必须将其大写:
$(document).ready(function () {
var kpopup = new Kpopup(
$("#clas_academy_id"),
$(".popup-picker"),
$("#clas_academy_id_hidden"),
$("#popup-result"),
'@Url.Action("searchAcademies","Academy")'
);
});
您已经在向类传递jQuery对象,所以不要这样做:
$(hostElement).val()
。只需执行hostElement.val()
。我使用了它,但有错误类型错误:hostElement.val不是一个函数
查看所有全局变量!世界上为什么会用不把完整的变量名放在参数中来开始呢!$.Class来自哪里?我试图在jquery文档中找到它,但找不到这样的函数。