views:

49

answers:

2

Hi, I'm creating a tags with this code:

$('#td' + id).append('<p><a href="#" onclick="excluirArquivo(\'' + response + '\'); return false;"><img src="/erp/proposta/media/images/delete.png" alt="Excluir arquivo" /></a> ' + file + '</p>');

excluirArquivo function

function excluirArquivo(arquivo) {
    $.ajax({
        type: 'POST',
        url: '/erp/proposta/index.php/arquivo/remover/' + arquivo
    });

    alert($(this));
}

But this element inside excluirArquivo function is returning the Window object. How do I get the clicked element (a tag) inside of excluirArquivo?

+2  A: 

If you must assign your event handler that way (that is, the "DOM 0" way, instead of with jQuery), you can do this:

<a href='#' onclick='excluirArquivo(this)' > ... </a>

Or, I suppose (given that you want to pass a parameter):

<a href='#' onclick='excluirArquivo.call(this, param)'> ... </a>

That way, "this" inside the function will be the element, which seems closer to what you want.

Pointy
and it's WAY better to assign the event handler in Javascript, after you've `append()`-ed.
Matt Ball
A: 

You need to split it, like this:

$("#td" + id).append("<p><a  href=\"#\" /></p>");

and then select the new element

$("#td > p > a").click(
function(){
//this now will be pointing to the selected element
}
)
Dani Cricco