如何访问jQuery事件中的对象方法
How to access object method within jQuery event
在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);
});
相关文章:
- 如何从jQuery的事件对象中检索属性
- 如何在JavaScript中基于事件对象获取文件名
- 如何避免在这种情况下修改事件对象
- 如何在事件处理程序中获取 javascript 事件对象
- 如果在设置侦听器之前触发了 DOMContentLoaded 事件,如何检索“事件”对象
- addEvent 给出空事件对象
- 修改鼠标事件对象的“目标”以进行事件委派
- 如何将参数传递给backbone.js中事件对象中绑定的函数
- 从ng重复奇数内部的ng点击访问事件对象
- 如何从 React 中的事件对象访问自定义属性
- 如何将事件对象传递给对象中的函数
- 正在发送事件对象
- 是否可以获得“”的事件对象;当前“;或“;最后一个“;事件,而不将其作为处理程序中的参数接收
- 如何将事件对象字符串化
- 通过angular传递关于事件预防的信息;s事件对象
- Javascript事件对象:其中是选择器
- Meteor.js:如何检索事件对象的父元素的数据属性
- JavaScript 如何重新识别事件对象变量
- 事件对象在此代码中的工作原理
- 是为响应 DOM 事件而创建的多个事件对象