Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从jQuery内部调用javascript函数?_Javascript_Jquery_If Statement_Scope - Fatal编程技术网

如何从jQuery内部调用javascript函数?

如何从jQuery内部调用javascript函数?,javascript,jquery,if-statement,scope,Javascript,Jquery,If Statement,Scope,我试图清理一些代码并将其划分为不同的函数。有些东西不起作用,我认为这与范围有关。我试图从jQuery更改事件侦听器中执行loadSubscriberList showUserList: function (res) { $('#cvUser').append('<option value=""> - Select a user - </option '); $.each(res.UserList, function (key, value) {

我试图清理一些代码并将其划分为不同的函数。有些东西不起作用,我认为这与范围有关。我试图从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)
    )
},
未捕获类型错误:this.loadSubscriberList不是函数

你能试试这个吗

$('#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
  }

将this.loadSubscriberList更改为loadSubscriberList$'cvUser'.val;并将cvUserVal作为参数添加到loadSubscriberList函数中。

在javascript中,其含义是动态的

在内部函数(keyup/change处理程序)中,这是cvUser元素

一种解决方法是保留对此外部对象的引用。根据习惯,我们使用它


您从哪里调用loadSubscriberList,它会给您带来错误?你能发布那个代码吗?试着把它放在$'cvUser'中ShowUserList.this.loadSubscriberList的前面。大概是在'keyup change'上。jQuery事件处理程序中的这个元素引用了事件cvUser的元素目标,因此它说它没有该函数。提示:您可以缓存var cvUser=$'cvUser',并重用它,而不是每次跳入DOM。然后执行cvUser.on'event'。尝试window.loadSubscriberList:函数{//您的代码}如果出现错误,则未定义loadSubscriberList。
showUserList: function(res) {
    var that = this;
    ...
    $('#cvUser').on('keyup change', function() {
        ...
        that.loadSubscriberList();
        ...
    });
},