如何使用内联HTML onclick和jQuery获取单击的元素?

时间:2010-05-24 18:01:58

标签: javascript jquery events onclick this

我正在用以下代码创建标签:

$('#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 excluirArquivo(arquivo) {
    $.ajax({
        type: 'POST',
        url: '/erp/proposta/index.php/arquivo/remover/' + arquivo
    });

    alert($(this));
}

但是excluirArquivo函数中的这个元素正在返回Window对象。如何获取excluirArquivo中的单击元素(标记)?

2 个答案:

答案 0 :(得分:9)

如果必须以这种方式分配事件处理程序(即“DOM 0”方式,而不是jQuery),则可以执行以下操作:

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

或者,我想(假设您要传递参数):

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

这样,函数内部的“this”将是元素,它看起来更接近你想要的东西。

答案 1 :(得分:1)

您需要拆分它,如下所示:

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

然后选择新元素

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