1

我在 OnClick 事件中有一个 Ajax 调用。

在 OnClick 内部,我设置了一个var type = $(this).closest("table").attr("id");

我试图type在 Ajax 的完整函数()中调用它。

但它显示为未定义。

也许有人可以解释一下为什么会这样?

谢谢!!

$(document).on('click','.swaction',function(event){
    var pdfId = $(this).closest('tr').find('td:first').html();
    var type = $(this).closest("table").attr("id");
    event.preventDefault();

    if( $(this).data('action') === 'delete' )
    {
      var currentElement = this;
      if( confirm( "¿Está seguro de querer eliminar el \nPDF Nº " + pdfId + '?' ) )
      {
        $.ajax({
          url: 'ct_form_procesar_escaneos/pdf/delete/'+ type + '/' + pdfId,
          method: 'POST',
          error: function( jqXHR, textStatus, errorThrown )
          {
            alert( errorThrown );
          },
          complete: function()
          {
            var a = type; // undefined
            $(currentElement).closest('tr').fadeOut(600, function(){
              $(currentElement).remove();
              $.procesar_escaneos.removeOnEmpty( type );
            });
          }
        });
      }
    }
4

1 回答 1

2

在 javascript 中,this关键字根据调用它的函数动态获取它的上下文。当您type从 Ajax 回调中调用时,上下文已更改并且this不是同一个对象。

由于 javascript 使用词法作用域,您可以this在上下文正确时保存对对象的引用,然后在函数中使用此引用。

var self = this;
var type = $(self).closest("table").attr("id");

这将起作用。

于 2013-06-13T23:20:47.127 回答