I want to replace an old .live()
function with .on()
.
.live()
var jqRow = $('#' + id + ' tr');
jqRow.live("click", function () {
myFunction(this);
return false;
});
.on()
var jqRow = $('#' + id + ' tr');
$(document).on("click", jqRow, function () {
myFunction(this);
return false;
});
The this
of the .live()
method returns a JS object (I need this).
The this
of the .on()
method returns a jQuery object, that causes myFunction to fail.
How can I get the same non jQuery this object like in the live function?
Your syntax is incorrect, your
jqRow
variable is a jQuery object, but the.on()
function only takes string selectors. If you pass a jQuery object, that argument is ignored, and it's the same as setting up a non-delegated event handler on the document itself.Change this:
to this: