I've got a HTML menu option, which I bind a click
handler in jQuery:
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'
});
});
},
...
}
I've got a problem with the following line:
$(this.getMainContainerSelector()).html(ich.outcomeListTemplate({}));
and I guess it's a context problem. I mean, inside the bind function, this
is not xyz
anymore, but the ('#menu_outcome_list') HTML element. What I want to do is just to call the xyz
's method from inside the bind function.
You still have closure access to it in the methods you define in xyz.
You can just call
xyx.getMainContainerSelector();
If you want a
jQuery
ish solution, jQuery has ajQuery.proxy()
function that binds context:I think the first option is nicer though.