我有一个HTML菜单选项,我在jQuery中绑定了一个click
处理程序:
var xyz = {
getMainContainerSelector: function () {
return '.container#main';
},
bindMenuOptions: function () {
$('#menu_outcome_list').bind('click', function() {
// inject template
$(this.getMainContainerSelector()).html(ich.outcomeListTemplate({}));
// load datatable
$('#outcomes').dataTable({
"bServerSide": true,
'sPaginationType': 'bootstrap',
"sAjaxSource": '../php/client/json.php?type=outcomes'
});
});
},
...
}
我遇到以下问题:
$(this.getMainContainerSelector()).html(ich.outcomeListTemplate({}));
我认为这是一个背景问题。我的意思是,在绑定函数中,this
不再是xyz
,而是('#menu_outcome_list')HTML元素。我想要做的只是从绑定函数内部调用xyz
的方法。
答案 0 :(得分:2)
您仍然可以在xyz中定义的方法中对它进行闭包访问。
您只需致电xyx.getMainContainerSelector();
如果你想要一个jQuery
ish解决方案,jQuery有一个绑定上下文的jQuery.proxy()
函数:
$('#menu_outcome_list').bind('click', $.proxy(function(){
//rest of your code
},xyz)})
我认为第一种选择更好。