javascript - 如何访问 jQuery 事件中的对象方法

标签 javascript jquery oop

我正在尝试在 jQuery 的帮助下用 JavaScript 设计一个面向对象的应用程序。但是,在我的应用程序类中使用 jQuery 事件处理程序时,我遇到了问题。这是有问题的代码片段:

<script type="text/javascript">
function Library(s_list) {
    this.songs = s_list;
    this.song_table = $('#songs');
    this.search_input = $('#search-txt');

    this.refresh_table = function() {
        this.song_table.html('<tr id="fields"><td></td><td>Name</td><td>Artist</td><td>Album</td><td>Time</td></tr>');

        for ( index in this.songs ) {
            if ( (index % 2) == 0 ) {
                this.song_table.append('<tr class="l"><td></td><td>' + this.songs[index] + '</td><td>Artist</td><td>Album</td><td>Time</td></tr>');
            } else {
                this.song_table.append('<tr class="d"><td></td><td>' + this.songs[index] + '</td><td>Artist</td><td>Album</td><td>Time</td></tr>');
            }
        }
    }

    this.filter_songs = function(text) {
        // Not implemented
    }

    this.search_input.keyup(function() {
        var sender = $(this);
        var s = $.trim(sender.val());

        // I need to access the filter_songs method of the Library class here. Normally I would use "this" but jQuery uses it for the html object that triggered the event
    });

    this.refresh_table();
}

var library;

$(document).ready(function() {
    library = new Library(song_list);

});

</script>

问题是我需要从 jQuery search_input.keyup 事件处理程序访问 Library 类的 filter_songs 方法。通常我会使用“this”,但 jQuery 将它用于触发事件的 html 对象。我对这个应用程序的设计是否错误,或者有没有办法解决这个问题?感谢您的帮助。

最佳答案

你需要一个关闭。试试这个:

var self = this;
this.search_input.keyup(function() {
            var sender = $(this);
            var s = $.trim(sender.val());
            self.filter_songs(s);
        });

关于javascript - 如何访问 jQuery 事件中的对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6529168/

相关文章:

Javascript 正则表达式表单验证 - 边缘情况

javascript - 有没有办法使用表单中的 name 属性将数组嵌套在对象内?

jquery - Bootstrap、弹出窗口不工作

javascript - 为什么 jquery $.post 命令不向服务器发送 JSON 数据

javascript - React : . 映射不是函数

javascript - angularJS如何使用ui-bootstrap分页获取表中每一行的索引值?

jquery - 观察 DOM 变化,优雅的方式

javascript - 在 JS 中从字符串创建方法

C#如何继承默认构造函数

C++ 函数指针和类