[英]How to call a javascript function from inside jQuery?
I am trying to clean up some code and separate it into different functions. 我正在尝试清理一些代码并将其分成不同的功能。 Something is not working and I think it has to do with scope. 某事不起作用,我认为这与范围有关。 I am trying to execute loadSubscriberList()
from inside a jQuery change event listener. 我试图从jQuery更改事件侦听器内部执行loadSubscriberList()
。
showUserList: function (res) {
$('#cvUser').append('<option value=""> - Select a user - </option ');
$.each(res.UserList, function (key, value) {
$('#cvUser').append('<option value="' + value.id + '">' + value.firstName + " " + value.lastName + " " + value.userid + '</option>');
});
$('#cvUser').on('keyup change', function () {
if ($('#cvUser').val()) {
$('#subscriberSelectView').html('');
var showSubscribers = $($("#subscriberSelect").text());
$("#subscriberSelectView").append(showSubscribers);
this.loadSubscriberList();
} else {
$('#subscriberSelectView').html('');
}
});
},
loadSubscriberList: function () {
var postData = {
'usr': $('#cvUser').val()
}
appNS.tpmBase.ajaxReq(
'',
postData,
'/rsc/cvr/gsl',
null,
null,
$.proxy(this.handleShowUserList, this)
)
},
Uncaught TypeError: this.loadSubscriberList is not a function 未捕获的TypeError:this.loadSubscriberList不是函数
Can you try this, 你可以试试这个吗
$('#cvUser').on('keyup change', function () {
if($('#cvUser').val()){
$('#subscriberSelectView').html('');
var showSubscribers = $($("#subscriberSelect").text());
$("#subscriberSelectView").append( showSubscribers );
loadSubscriberList($('#cvUser').val());
}
else {
$('#subscriberSelectView').html('');
}
});
} ,
loadSubscriberList: function(cvUserVal) {
var postData = {
'usr': cvUserVal
}
changed this.loadSubscriberList()
to loadSubscriberList($('#cvUser').val());
将this.loadSubscriberList()
更改为loadSubscriberList($('#cvUser').val());
and added cvUserVal
as a parameter to loadSubscriberList()
function. 并将cvUserVal
作为参数添加到loadSubscriberList()
函数。
In javascript, the meaning of this
is dynamic. 在javascript中, this
是动态的。
In the inner function, your keyup/change handler, this
is the #cvUser
element. 在内部功能,您KEYUP /更改处理, this
是#cvUser
元素。
A workaround is to keep a reference to the outer this
. 一种解决方法是保留this
外部的引用。 By custom we use that
. 按照习惯,我们使用that
。
showUserList: function(res) {
var that = this;
...
$('#cvUser').on('keyup change', function() {
...
that.loadSubscriberList();
...
});
},
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.