function init_exam_chooser(id,mode)
{
this.id=id;
this.table=$("#" + this.id);
this.htmlRowOrder="<tr>" + $("#" + this.id + " tbody tr:eq(0)").html() + "</tr>";
this.htmlRowNew="<tr>" + $("#" + this.id + " tbody tr:eq(1)").html() + "</tr>";
$("#" + this.id + " tbody tr").remove();
//Arxikopoiisi
var rowNew=$(this.htmlRowNew);
rowNew.find("input[type='text']").eq(0).autocomplete({
source: function (req,resp)
{
$.ajax({
url: "/medilab/prototypes/exams/searchQuick",
cache: false,
dataType: "json",
data:{codeName:req.term},
success: function(data) {
resp(data);
}
});
},
focus: function(event,ui)
{
return false;
},
minLength :2
});
rowNew.find("input[type='text']").eq(1).autocomplete({
source: function (req,resp)
{
$.ajax({
url: "/medilab/prototypes/exams/searchQuick",
cache: false,
dataType: "json",
data:{name:req.term},
success: function(data) {
resp(data);
}
});
},
focus: function(event,ui)
{
return false;
},
minLength :2
});
rowNew.find("input[type='text']").bind( "autocompleteselect", function(event, ui) {
alert(htmlRowOrder);
var row=$(htmlRowOrder);
$(table).find("tbody tr:last").before(row);
alert(ui.item.id);
});
rowNew.appendTo($(this.table).find("tbody"));
//this.htmlRowNew
}
The problem is at ,how i can access htmlRowOrder?
I tried this.htmlRowOrder and didnt work….
Any ideas??
rowNew.find("input[type='text']").bind( "autocompleteselect", function(event, ui) {
alert(htmlRowOrder);
var row=$(htmlRowOrder);
$(table).find("tbody tr:last").before(row);
alert(ui.item.id);
});
Your issue is that
thisis not what you think it is inside your event handlers. Most jQuery event handlers run in the context of the element on which the event was triggered; what that means is that inside the event handler,thisis the element on which the event was triggered.You can solve this problem either by waiting for the next revision of JavaScript, which will have Function.prototype.bind baked in, or by setting a reference to your scope object outside the event handler and referring to it inside, similarly to patrick’s answer.